MATLAB Answers

find string pattern in strings ( 'ab*d' in 'abcd')

25 views (last 30 days)
Jannis Maq
Jannis Maq on 2 Jun 2016
Commented: Jannis Maq on 3 Jun 2016
I want to check if there is a string pattern within a string. The pattern may look like this: 'ab*d', where * could be one or more charakters or none. So if the pattern would be 'abQWEd' or 'abd' I still want to have a positive feedback. Do you know how to do this?

Accepted Answer

Elias Gule
Elias Gule on 2 Jun 2016
try this:
pattern = 'ab.*d'; %%Pattern to match
textstr = 'sqthabVUYd'; %%Input string
match = regexp(textstr,pattern,'match');
this will match 'abVUYd' in the input string.
Jannis Maq
Jannis Maq on 2 Jun 2016
Ah, I was too fast. Is there a way to make ".*" not include all charakters? If there is a "n" or a "N" it shall not work. Do you also know how to solve this?

Sign in to comment.

More Answers (1)

Elias Gule
Elias Gule on 3 Jun 2016
Edited: Elias Gule on 3 Jun 2016
I presume that you want it to work for all patterns 'ab.*d' that don't contain the letter "n" or "N", such that "abCDnMMd" does not produce a valid match while "abCDMMdn" does. If that's the case then, try this pattern:
pattern = 'ab((\W*[a-mA-Mo-zO-Z0-9]*\W*)*)d'; %%Pattern to match
\W* => zero or more non-word characters
[a-mA-Mo-zO-Z]* => a group of zero or more upper or lowercase letters of the alphabet excluding "n" or "N".
  1 Comment
Jannis Maq
Jannis Maq on 3 Jun 2016
Thanks for your reply. Your presumption is right!
But the code doesn't work exactly how I want.
ans =
{} %%Expected answer
ans =
'6' %%Expected answer
ans =
{} %%Not expected :(
But when I put the inputs this way
ans =
'ABC6' %Expected answer
%%But then the problem is:
ans =
'6' % Not expected, because of the 'n'

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!