Will REGEXP recognize specific characters within parenthesis?
3 次查看(过去 30 天)
显示 更早的评论
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 个评论
Stephen23
2017-5-10
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.
采纳的回答
Walter Roberson
2017-5-9
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+\)'
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!