matlab正则表达式

时间:2011-10-30 18:33:12

标签: regex matlab

在以下字符串中:quantity = 100;我想使用正则表达式来获取100

为什么以下正则表达式不返回100 ??

regexp('quantity=100;','(?=\w*\s*\=\s*)[^]+(?=\s*;$)','match','once')

2 个答案:

答案 0 :(得分:7)

匹配任何数字的正则表达式为\d。因此,如果您的字符串仅为text=numbers形式,则以下内容将起作用。

digits = regexp( 'quantity=100;', '\d', 'match');
result = [digits{:}]

result = 
         '100'

请注意,MATLAB返回匹配的单元格数组。因此,您无法使用'once',因为它只会返回1

答案 1 :(得分:2)

你应该在开头使用负面的前瞻性正则表达式,试试这个:

regexp('quantity=100;','(?<=\w*\s*\=\s*)[^]+(?=\s*;$)','match','once')

regexp( 'quantity=100;', '(?<=^.*\=\s*)(.*)(?=\s*;$)', 'match', 'once' )更简单