我试图在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].
有人能帮我弄清楚我做错了什么吗?
您的模式仅匹配方括号内的单个数字.要匹配一个或多个,请+在每个之后添加:
'(\[\d+,\d+,\d+,\d+\])'
Run Code Online (Sandbox Code Playgroud)
如果你不关心方括号内的格式,只需要在里面用数字和逗号提取方括号,你可以使用更简单的方法
'\[[\d,]+]'
Run Code Online (Sandbox Code Playgroud)
请注意,]在正则表达式的末尾不是一个特殊的字符,因为没有对应的 [打开字符类,因此,不需要转义它.