我正在尝试在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]'
我想得到所有方框,即[1,2,3,5],[11,22,33,44]和[23,12,12,33]。
有人可以帮我弄清楚我做错了吗?
答案 0 :(得分:5)
您的图案仅匹配方括号内的单个数字。要匹配一个或多个,请在每个之后添加+
:
'(\[\d+,\d+,\d+,\d+\])'
如果你不关心方括号内的格式,只需要在里面用数字和逗号提取方括号,你可以使用更简单的
'\[[\d,]+]'
请注意,正则表达式末尾的]
不是特殊字符,因为没有相应的[
打开字符类,因此不需要转义它。