我有一个带有数字或字母的字符串 a
, 可能后跟 r
或 l
.
在 MATLAB 中,以下正则表达式返回为
>> regexp('10r', '([0-9]*|a)(l|r)*', 'match')
ans =
'10r'
我希望
10
和 r
分开,因为我有两个捕获组。有没有办法获得两个独立返回的元胞数组?我在文档中看不到它。
最佳答案
你想要“ token ”而不是“匹配”
>> toks = regexp('10r', '([0-9]*|a)(l|r)*', 'tokens');
>> toks{1}
ans =
'10' 'r'
或者,如果您想花哨一些,请命名标记并获取结构数组:
>> toks = regexp('10r', '(?<number>[0-9]*|a)(?<letter>l|r)*', 'names');
>> toks
toks =
number: '10'
letter: 'r'
关于regex - MATLAB 中的多个捕获组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17574369/