在matlab中我有一个字符串:
y = '[3-G]]3|25+3|[3-G]4|25+4|G5|25+5|F'
然后我有一个名为intHit的变量,我需要返回一个单元格数组,如果后跟一个符号,则包含一个int。因此,如果我们将其定义为:
intHit = regexp(y,'(\d*)([+-])','Match');
它返回类似:
intHit =
1×5细胞阵列
'3-' '25+' '3-' '25+' '25+'
然而,有时我的intHit调用,取决于y的输入返回减号( - )符号,前面没有整数。我认为我的正则表达式是错误的。有人可以帮我格式化这个,所以它只会返回一个整数后加一个加号(+)或减号( - )。所以总是像上面的例子。提前致谢。
答案 0 :(得分:3)
请改为尝试:
intHit = regexp(y,'(\d+)([+-])','Match');
^--- that's the change
我认为你错了quantifier。 *
将连续匹配0次或更多次(这意味着它可以匹配单独的优缺点),而+
将连续匹配1次或更多次。
此外,如果您没有捕获令牌,则可以将匹配表达式简化为'\d+[+-]'
。