MATLAB Answers


Why do strfind and regexp may lead to a different result?

Asked by pietro
on 12 Jun 2017
Latest activity Commented on by pietro
on 13 Jun 2017
Hi all,
I noticed that regexp and strfind may lead to different results. Here an example:
regexp('Infinitely Variable Transmission (IVT)','Infinitely Variable Transmission (IVT)')
Why does it occur?


What is that an example of?
>> regexp('Infinitely Variable Transmission','Infinitely Variable Transmission')
ans =
>> strfind('Infinitely Variable Transmission','Infinitely Variable Transmission')
ans =
pardon, I pasted the wrong example.
@pietro: if you are planning on using regular expressions then you really need to understand the different meta-characters, such as parentheses. A good place to learn about regular expressions in MATLAB is to read the MATLAB documentation:

Sign in to comment.



2 Answers

Answer by Adam
on 12 Jun 2017
Edited by Adam
on 12 Jun 2017
 Accepted Answer

regexp( 'Infinitely Variable Transmission (IVT)', 'Infinitely Variable Transmission \(IVT\)' )
works, but you have to escape the parenthesis as they have special meaning in a regexp expression.
if you look in
doc regexp
in the section headed 'Split Text at Delimiter Using split Keyword', there is an example of this for escaping the ^ symbol.

  1 Comment

ahh you're right! Thanks

Sign in to comment.

Answer by Walter Roberson
on 12 Jun 2017

In the general case, regexp can return different results if the pattern includes metacharacters.
There is a routine that can be used to "escape" characters so that they are treated literally, but the routine name is not coming to mind at the moment.

  1 Comment

regexptranslate() with the 'escape' option is suitable for this purpose.

Sign in to comment.