2013-10-07 27 views
0

我有一個正則表達式,用於替換短語,如果該短語不包含HTML錨標記或IMG標記。在這個例子中被搜索的短語是 「Hello World」 的如何將.Net正則表達式轉換爲php

的.NET正則表達式是

(?<!<a [^<]+)(?<!<img [^<]+)(?<=[ ,.;!]+)hello world(?=[ ,.;&!]+)(?!!.*</a>) 

E.G.正則表達式應該在一個短語匹配 「世界你好」 之類

"one two three hello world four five" 

但在一個短語像

"one two three <a href='index.html'> hello world </a> four five" 

"one two three <img alt='hello world' \>four five" 

它與相關的應該不匹配的Hello World以下是我最初開發.Net版本時的問題。 regular expression that doesn't match a string if it's the text within an html anchor tag

任何有關如何將其轉換爲PHP正則表達式的指導將非常感激。

+0

這個正則表達式不能匹配任何.NET也。結束標記有一個斜槓(''),但表達式會查找反斜槓。 –

+0

@DanielHilgarth感謝您的糾正,我已經更新了這個問題。 – Rich

+0

現在有什麼問題? –

回答

1

注意:不要使用正則表達式來解析標籤。

對於aimg標籤具體而言,您可以執行以下操作。

(?!<(?:a|img)[^>]*?>)\bhello world\b(?![^<]*?(?:</a>|>)) 

live demo

我想在或標籤之間的任何東西,你可以試試這個。

(?!<[^>]*?>)\bhello world\b(?![^<]*?(?:</[^/]*>|>)) 

live demo

+0

我已經成功地使用了第一個正則表達式,並進行了小型調整,以便進行不區分大小寫的匹配。感謝您的幫助,並感謝現場演示,我將在下一次使用該站點時不幸寫出正則表達式。 – Rich

+0

很高興我能幫到你 – hwnd

相關問題