MATLAB Answers

Will REGEXP recognize specific characters within parenthesis?

3 views (last 30 days)
Brad
Brad on 9 May 2017
Commented: Brad on 9 Mar 2018
I'm attempting to use REGEXP to match a specific string within a set of parenthesis. The code I'm using is as follows;
str = '(0:20)';
exp = '([\P\0\D\d])';
tokens = regexp(str, exp, 'tokens');
b = reshape([tokens{:}], [ ], 1).';
Data = cell2mat(b);
When executed, Data contains a 1 x 6 array of char: (0:20)
I'm having difficulty in making the expression sensitive to the contents of this array. Specifically, I'm only interested in the data if the value to the left of the colon is a zero.
Is this possible when using \P as part of the expression?
  1 Comment
Stephen Cobeldick
Stephen Cobeldick on 10 May 2017
The MATLAB regular expression syntax is documented here:
and it does not include any operator '\P'. In any case you have not given us any information about what data you want to obtain from the string: is it the second number value, or all of the string within parentheses, or both number values... is the colon always present, or could it be a concatenation operator instead? You state that "only interested in the data if the value to the left of the colon is a zero", but what is "the data"? Even parentheses could be data. It is only worth starting to write a regular expression once you clearly specify the requirements it has to meet.
You could start with something like this, which returns the number the follows '0:'
>> str = '(0:20)';
>> regexp(str,'(?<=0:)\d+','match','once')
ans =
20
Bonus You might like to download and try my FEX submission:
which lets you interactively develop regular expressions and see the outputs change as you type/alter your expression.

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 9 May 2017
MATLAB's regexp does not know anything about unicode categories. Also, \0 is not a valid unicode category name.
It looks to me as if what you are looking for is:
'\(0:\d+\)'
  1 Comment
Brad
Brad on 9 Mar 2018
Walter, after looking into this more, you are correct. My search pattern was a last ditch effort to get the result that Stephen came to using his code. These regular expressions are an ongoing learning experience!!

Sign in to comment.

More Answers (0)

Products

Community Treasure Hunt

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

Start Hunting!