2010-08-05 114 views
1

我需要一個正則表達式,它會在HTML網頁中找到一個開放的div標籤或一個閉合的div標籤,或者兩者都有。謝謝:)正則表達式來尋找div標籤

+3

使用HTML解析器。 – 2010-08-05 22:30:25

+0

你在用什麼語言? – 2010-08-05 22:33:43

+1

哦,不,不是。 - 。http://tinyurl.com/yzep3mp – Cumbayah 2010-08-05 22:39:30

回答

1

你可以這樣開始:

</?div> 

這不會正確處理:

  • 空白的DIV
  • 屬性
  • 自閉div標籤
  • 大寫標籤
  • 標籤小號HTML註釋裏面應該忽略
  • 等...

要正確處理HTML,你最好使用HTML解析器,而不是正則表達式。

2

爲安全起見:

</? *div[^>]*> 
+0

我不會將其描述爲「安全」。 – 2010-08-05 23:39:52

0

HTML, XHTML, and XML can not be parsed using regular expressions。有爲這種類型的事情設計的解析器。如果你指定了你正在使用的語言,我肯定有人可以爲這個工作建議正確的工具,但是我知道一個事實,那就是正則表達式不在這個列表中。

+0

他/她說他/她想要查找標籤,但不一定要解析內容。 – NullUserException 2010-08-05 23:30:09

+0

無論你想要做什麼 - 我見過的大多數解析器都允許你對像count標籤這樣的東西進行操作。但是,在處理HTML時,正則表達式從來就不是正確的答案。 – 2010-08-06 00:58:32

1

如果你可以使用xpath這將是//div考慮使用支持的正則表達式,而不是它的XML解析器。如果你必須使用正則表達式,請使用coding_hero的答案。

作秀,在PHP中:

//$htmldoc is some xhtml document from somewhere 
$xhtml = simplexml_load_file($htmldoc); 
$divs = $xhtml->xpath('//div'); //grab simpleXMLElement from all divs in document 
return $divs->asXML(); //returns xml of div elements and children 
+0

我相信XPath需要XML內容。 HTML不符合XML的所有規則。 – 2010-08-06 00:58:54

+0

同意,但這就是爲什麼我以「如果它必須是正則表達式,使用編碼_hero的」開頭。我還指定它基於一個xhtml文檔。 SimpleXML也完全兼容PHP中的DOM。 – Tim 2010-08-06 04:05:18

0

要找到打開和關閉div標籤,我會用

</?\bdiv\b[^>]*>