我想我已經得到了這個工作的大部分,但不知道是否有更好的方式來寫它:我想匹配字時,它不是掛更好的方式來寫這個正則表達式?負前瞻
/\b(Word)(?!.*?<\/a>)(?!.*?>)\b/
,並它不是HTML標籤的一部分(如<a href="" title="Word">
不應該匹配)。
從我所瞭解的情況來看,如果可能的話最好使用否定字符類,而不是懶惰。我試圖做,但無法弄清楚。我甚至不知道這是否可能,但我想我會把它扔到那裏。
我想我已經得到了這個工作的大部分,但不知道是否有更好的方式來寫它:我想匹配字時,它不是掛更好的方式來寫這個正則表達式?負前瞻
/\b(Word)(?!.*?<\/a>)(?!.*?>)\b/
,並它不是HTML標籤的一部分(如<a href="" title="Word">
不應該匹配)。
從我所瞭解的情況來看,如果可能的話最好使用否定字符類,而不是懶惰。我試圖做,但無法弄清楚。我甚至不知道這是否可能,但我想我會把它扔到那裏。
你正在尋找的否定字符類是[^<>]*
。這將跳過任何標籤邊界。
/\b(Word) (?! [^<>]*<\/a> | [^<]*>) \b/x
注意尋找</a>
將允許正則表達式匹配應該鏈接有進一步的標記在它;例如粗體字<a>..<b>Word</b>..</a>
不會被跳過。 (檢查這樣的事情需要比預見更多的努力。)
謝謝馬里奧,這非常棒!並感謝關於更復雜的例子。幸運的是,我懷疑我會遇到這樣的問題。 :) –
爲什麼試圖修復什麼不壞?如果它匹配的東西很好(你已經嘗試將它匹配到一些NEAR比賽,以確保),那麼我會說,只是去與它。你所要求的可以寫成幾十種不同的方式,並受個人喜好。 –
你有沒有考慮過不要試圖使用正則表達式,而是實際上解析HTML,然後在沒有鏈接元素作爲父母的文本元素中查找單詞? – Amber
@DerrickTucker你說得很好。我對編碼和一點完美主義者都很陌生,但如果它有效的話,那麼也可以使用它。 –