RegEx排除匹配字符串,但不包括另一个字符串的一部分

时间:2012-12-14 04:58:18

标签: regex matlab

我对此帖有一个跟进问题:RegEx to exclude match if a certain word is present, but not another partial word

如果给出以下字符串。

x*vec*grad(vec)

如何找到'vec'而不是'grad(vec)'?

我假设我需要对搜索表达式使用类似下面的内容,但这对我不起作用。

vec(?!(?<=grad\(vec))

我也想忽略括号内的空格,即它应该适用于以下内容。

x*vec*grad( vec )

我正在使用MATLAB的regexp函数。感谢。

1 个答案:

答案 0 :(得分:2)

这适用于c#,它应该足够容易移植到MATLAB:

(?<!grad\()vec

它匹配vec*grad但不匹配x*grad(vec)

诀窍是使用负面的lookbehind(<!)而不是使用tyring来反转正面的lookbehind(<=)。