2012-12-14 27 views
0

我對此帖有一個後續問題: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的正則表達式函數。謝謝。

回答

2

這工作在C#中,它應該移植到MATLAB很輕鬆地:

(?<!grad\()vec 

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

訣竅是使用負向後視(<!)而不是tyring來反轉正向後視(<=)。

+0

爲\ s *帳戶添加空格。所以,'(?<!grad \(\ s *)vec'正在做我所需要的。謝謝。 – slaughter98

+0

好吧,它會打破'vec * somefunc(vec)',或者像vec * outerfunc(innerfunc (vec)* vec * factor,vec,somethingelse)' – nhahtdh

相關問題