Extracting consecutive digits using regexp
15 次查看(过去 30 天)
显示 更早的评论
I expected
regexp('ITEM 123', '.+(\d+)', 'tokens')
to return '123'. Why does it only return '3'? What would be the correct expression?
0 个评论
采纳的回答
per isakson
2019-6-22
编辑:per isakson
2019-6-22
These two returns "123"
%%
cac = regexp('ITEM 123', '.+?(\d+)', 'tokens' )
%%
cac = regexp('ITEM 123', '[^\d]+(\d+)', 'tokens' )
First, '.+' matches anything up til the end of the text, next it gives back just as little as needed to match '(\d+)' , which is one digit.
'.+?' matches as little as needed so that '(\d+)' is able to match the following text.
I prefer '[^\d]+(\d+)'
Or why not just
cac = regexp('ITEM 123', '\d+', 'match' )
2 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Characters and Strings 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!