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

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.