Regex 正则表达式以排除匹配字符串,但如果是另一个字符串的一部分则不排除

Regex 正则表达式以排除匹配字符串,但如果是另一个字符串的一部分则不排除,regex,matlab,Regex,Matlab,我有一个关于这个帖子的后续问题: 如果给定以下字符串 x*vec*grad(vec) 如何找到“vec”而不是“grad(vec)” 我假设我将需要对搜索表达式使用如下内容,但这对我不起作用 vec(?!(?<=grad\(vec)) 我正在使用MATLAB的regexp函数。谢谢。这在c#中工作,它应该可以很容易地移植到MATLAB: (?<!grad\()vec (? 它匹配vec*grad,但不匹配x*grad(vec) 诀窍是使用负的lookbehind()而不是tyr

我有一个关于这个帖子的后续问题:

如果给定以下字符串

x*vec*grad(vec)
如何找到“vec”而不是“grad(vec)”

我假设我将需要对搜索表达式使用如下内容,但这对我不起作用

vec(?!(?<=grad\(vec))
我正在使用MATLAB的regexp函数。谢谢。

这在c#中工作,它应该可以很容易地移植到MATLAB:

(?<!grad\()vec
(?
它匹配
vec*grad
,但不匹配
x*grad(vec)


诀窍是使用负的lookbehind(
)而不是tyring来反转正的lookbehind(
添加空格的\s*帐户)。因此,
(?正在做我需要的。谢谢。它将与
vec*somefunc(vec)
或像
vec*outerfunc(innerfunc(vec)*vec*factor,vec,somethingelse)这样的时髦玩意儿决裂
(?<!grad\()vec