2015-04-15 75 views
0

我想從html中取段落或div,但是如果它不包含表單。 例如:正則表達式匹配沒有子字符串的字符串

<p><form>I don't want this text</form>and not this text</p> 
<p>I want to take this text</p> 

我有工作變體,沒有窗體過濾器。

/(?:<(?:p|div)[^>]*>)(.*)(?:<\/(?:p|div)>)/iu 

以及不變形與過濾

/(?:<(?:p|div)[^>]*>)((?:.(?!<form))*)(?:<\/(?:p|div)>)/iu 

你能幫助我嗎?

+0

究竟是不是工作在哪些情況下沒有給出錯誤的結果(什麼是在這些情況下,預期的結果) – Keelan

+1

http://stackoverflow.com/questions/1732 348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 –

回答

1

警告:用Regexp解析HTML一直是,而且永遠是一個壞主意。

這是你的正則表達式略加修改的版本:

/(?:<(?:p|div)[^>]*>)(?!.*\<form\>)(.*)(?:<\/(?:p|div)>)/iu 

我改進它,讓你趕上包含文字「形式的任何段落(而不是標籤)與嘗試。這個測試:??

<p><form>I don't want this text</form>and not this text</p> 
<p>I want to take this text even if it contains the "form" word!</p> 
<p>I want to take this text</p> 
+0

謝謝,我突然明白我在看html,但正則表達式使用shortcodes :)對不起,我的注意力不集中。 –

+1

@StetsenkoStas如果這解決了您的問題,請通過單擊答案左側的複選標記來接受它。 –

相關問題