2013-12-03 52 views
1

我有#[\s]+on[a-z]+[\s]*=#si。我需要匹配(preg_replace)字符串,如onclick =,但只有當此字符串沒有跟隨另一個特定字符串時。僅當匹配字符串時,如果沒有另一個特定字符串

例(粗體爲這場比賽的)

一些文字onClickOrWhatever =一些文字

一些文字onClickOrWhatever =我的特殊字符串一些文字

第二行不應該匹配,因爲表達式是由「我的特殊字符串」。換句話說,我需要保持完整的特定內嵌JavaScript,但刪除(銷燬)任何其他。

這個表達式有點過於籠統。它也會部分匹配you told me once =),我意識到這一點。

+0

你正在做這個倒退。你不能有'一些文本'和'我的特殊字符串',因爲它們都是特殊的,有些東西是可以查找的。你可以找到這個特殊的東西,放下它,或者摧毀它。也許你可以說得更好。 – sln

+0

此外,您將無法刪除不匹配的內容。即使在向前看之後,仍然需要匹配某些東西,除非您只是要重命名該屬性。 – sln

+0

@sln我不確定你的意思。接受預測的答案很好。我只需要刪除(替換)'onEVENT =',只要它沒有特定的東西。看到這個[鏈接](http://rubular.com/r/mMnlHUnQ08) – Saix

回答

3

好回答你的問題,你可以使用negative lookahead

#\s+on[a-z]+\s*=(?!\s*my special string)#i 

你也不必在這裏s標誌,它被用於製作DOT比賽newline

+1

爲什麼等號被移動到最後?無論如何謝謝,我會接受你的答案。 – Saix

+0

@Saix:沒有特別的原因,那是一個錯字,讓我修復它。 – anubhava

+0

它也適用於'onclick ='和'我的特殊字符串'之間有另一個字符串。它可以被修改的方式,它只會看起來後?不搜索全文... – Saix

相關問題