search for keywords in text file

hi there I want to do search in TEST.txt, for 'Area' and 'class' keywords. if both exist display 'yes'. could you plz help me about that?
my code:
filetext = fileread('TEST.txt');
expr1 = '[^\n]*[Aa]rea[^\n]*';
matchstr = regexp(filetext,expr1,'match');
expr2 = '[^\n]*[Cc]lass[^\n]*';
matchstr = regexp(filetext,expr2,'match');
if matchstr(filetext,expr1)&& matchstr(filetext,expr2)
disp (yes)
end
error: Index in position 1 exceeds array bounds.

 Accepted Answer

  • You're overwriting your matchstring variable in the second regexp call, losing the result of the first call.
  • your matchstr(fileext, expr1) is complete nonsense. It is trying to index a scalar logical with two char arrays.
The correct expression would be:
if regexp(filetext,expr1,'match') & regexp(filetext,expr2,'match')
disp('yes');
end
It is puzzling how you could come up with the regular expressions but then write complete nonsense code.

5 Comments

Perhaps even just one regular expression with an OR operator (and a different conditional statement of course).
Doh!
if ~isempty(regexp(filetext, expr1)) && ~isempty(regexp(filetext, expr2))
disp('yes');
end
Thanks a lot Guillaume :) it works
Paolo
Paolo on 27 Jun 2018
Edited: Paolo on 27 Jun 2018
@narges You can also use regexpi instead of regexp for case insensitivity.
much better. thanks a lot :)

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Asked:

on 27 Jun 2018

Commented:

on 27 Jun 2018

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!