解析正则表达式语法问题 matlab / octave
parsing regular expression syntax issue matlab / octave
我可以在下面的matlab/octave中解析正则表达式:
A = 'Var Name 123.5'
[si ei xt mt] = regexp(A, '(\d)*(\.)?(\d)*$')
number = str2num(mt{1})
number = 123.50
但我得到一个语法错误,最有可能是由于 ]
A='[angle_deg = 75.01323334803705]'
[si ei xt mt] = regexp(A, '(\d)*(\.)?(\d)*$])
如何修正这个正则表达式?
假设您要查找字符串末尾的数字,第一种方法的正则表达式就可以了。因为您的新字符串中有一个结束字符 ]
,您的正则表达式将不起作用,因为您的字符串 没有以数字 结尾。因此,只需删除 $
字符就可以了,因为您想要搜索一个可能是也可能不是浮点数的数字。您的 regex
中有三个捕获组,其中第一个捕获组捕获数字的整数部分,第二个捕获组可选择捕获小数点,最后一个捕获组捕获数字的浮点部分。
您也没有在 regex
中正确关闭字符串。它需要一个结束单引号。因此:
A='[angle_deg = 75.01323334803705]';
[si ei xt mt] = regexp(A, '(\d)*(\.)?(\d)*');
显示来自 regexp
的所有输出变量,这是我得到的:
>> si
si =
14
>> ei
ei =
30
>> xt
xt =
[3x2 double]
>> mt
mt =
'75.01323334803705'
si
表示匹配发生位置的起始索引,即字符串中的索引 14。 ei
表示匹配发生的位置的结束索引,即索引 30。 xt
显示与正则表达式的每个标记或捕获组匹配的起始和结束索引。要显示它,只需执行以下操作:
>> xt{1}
ans =
14 15
16 16
17 30
因此,第一个捕获组从索引 14 开始到索引 15 结束,这是您号码的 75
部分。第二个捕获组从索引 16 开始,也在那里结束,表示 .
字符。最后,索引 17 到 30 表示数字的浮点部分,即 01323334803705
。最后,mt
向您显示与正则表达式匹配的提取字符串,即该字符串末尾的数字。您当然可以使用 str2num
.
将此字符串转换为数字
我可以在下面的matlab/octave中解析正则表达式:
A = 'Var Name 123.5'
[si ei xt mt] = regexp(A, '(\d)*(\.)?(\d)*$')
number = str2num(mt{1})
number = 123.50
但我得到一个语法错误,最有可能是由于 ]
A='[angle_deg = 75.01323334803705]'
[si ei xt mt] = regexp(A, '(\d)*(\.)?(\d)*$])
如何修正这个正则表达式?
假设您要查找字符串末尾的数字,第一种方法的正则表达式就可以了。因为您的新字符串中有一个结束字符 ]
,您的正则表达式将不起作用,因为您的字符串 没有以数字 结尾。因此,只需删除 $
字符就可以了,因为您想要搜索一个可能是也可能不是浮点数的数字。您的 regex
中有三个捕获组,其中第一个捕获组捕获数字的整数部分,第二个捕获组可选择捕获小数点,最后一个捕获组捕获数字的浮点部分。
您也没有在 regex
中正确关闭字符串。它需要一个结束单引号。因此:
A='[angle_deg = 75.01323334803705]';
[si ei xt mt] = regexp(A, '(\d)*(\.)?(\d)*');
显示来自 regexp
的所有输出变量,这是我得到的:
>> si
si =
14
>> ei
ei =
30
>> xt
xt =
[3x2 double]
>> mt
mt =
'75.01323334803705'
si
表示匹配发生位置的起始索引,即字符串中的索引 14。 ei
表示匹配发生的位置的结束索引,即索引 30。 xt
显示与正则表达式的每个标记或捕获组匹配的起始和结束索引。要显示它,只需执行以下操作:
>> xt{1}
ans =
14 15
16 16
17 30
因此,第一个捕获组从索引 14 开始到索引 15 结束,这是您号码的 75
部分。第二个捕获组从索引 16 开始,也在那里结束,表示 .
字符。最后,索引 17 到 30 表示数字的浮点部分,即 01323334803705
。最后,mt
向您显示与正则表达式匹配的提取字符串,即该字符串末尾的数字。您当然可以使用 str2num
.