MATLAB中的多个捕获组

Raz*_*erM 2 regex matlab

我有一个包含数字或字母的字符串a,可能后跟rl

在MATLAB中,以下正则表达式返回为

>> regexp('10r', '([0-9]*|a)(l|r)*', 'match')
ans = 
    '10r'
Run Code Online (Sandbox Code Playgroud)

我期望10r单独进行,因为我有两个捕获组。有没有办法让单元格数组都独立返回?我在文档中看不到它。

Pet*_*ter 5

您想要“令牌”而不是“匹配”

>> toks = regexp('10r', '([0-9]*|a)(l|r)*', 'tokens');
>> toks{1}
ans = 
    '10'    'r'
Run Code Online (Sandbox Code Playgroud)

或者,如果您想花哨的话,请为令牌命名并获取一个struct数组:

>> toks = regexp('10r', '(?<number>[0-9]*|a)(?<letter>l|r)*', 'names');
>> toks
toks = 
    number: '10'
    letter: 'r'
Run Code Online (Sandbox Code Playgroud)