2012-09-24 85 views
2

我想這正則表達式帶有特殊字符的正則表達式是無效的?

(?<!(John|Joe)) (Taylor) 

在這個文本 John James Taylor

但我正在逐漸「失效模式的回顧後」在這裏http://www.rubular.com/r/TjD2d4oG5z

我想匹配不「泰勒」在它之前有約翰或喬。

請提出任何提示?

+2

是您的正則表達式風味接受可變長度的回顧後?他們大多沒有。 – Toto

+0

謝謝!只是發現變量長度不能在這個評論中找到:http://stackoverflow.com/questions/3479131/problem-with-quantifiers-and-look-behind 此外,兩個答案正在與提出的變化,但不是如果我像\ w +添加sg,因爲這是一個可變長度量詞,因爲我現在明白了:)。 – giorgio79

回答

3

嘗試以下操作:

(?<!(?:John|Joe)) (Taylor) 

(?:)是一個非捕獲組,這使得在環視有道理的,因爲你只是做一個斷言,實際上並不匹配什麼。或者只是一起刪除捕獲組,即(?<!John|Joe)

+0

我認爲不需要非捕獲組。 – xdazz

+0

@xdazz:不是,是的。我只是想指出,使用捕獲組是原始正則表達式無效的原因。 –

2

嘗試:

/(?<!John|Joe) (Taylor)/