无法在matlab中使用模式正则表达式查找所有组

zel*_*lta 2 regex matlab

我试图在matlab中解析一个正则表达式.我试图为所有组提取'[]'之间的所有数字.以下是详细信息:

pat = '(\[\d,\d,\d,\d\])';
s1 = 'frame_1:[1,2,3,5],[11,22,33,44],[23,12,12,33],'

[matched_string] = regexp(s1,pat,'match');

>> matched_string{:}

ans =

    '[1,2,3,5]'
Run Code Online (Sandbox Code Playgroud)

我想得到所有方框,即[1,2,3,5],[11,22,33,44]和[23,12,12,33].

有人能帮我弄清楚我做错了什么吗?

Wik*_*żew 5

您的模式仅匹配方括号内的单个数字.要匹配一个或多个,请+在每个之后添加:

'(\[\d+,\d+,\d+,\d+\])'
Run Code Online (Sandbox Code Playgroud)

如果你不关心方括号内的格式,只需要在里面用数字和逗号提取方括号,你可以使用更简单的方法

'\[[\d,]+]'
Run Code Online (Sandbox Code Playgroud)

请注意,]在正则表达式的末尾不是一个特殊的字符,因为没有对应的 [打开字符类,因此,不需要转义它.