回答
有沒有! HTML是第2種語言,因此不能用正則表達式(類型-3)解析。
如有疑問,請參閱this wiki article。
許多人使用正則表達式來解析/編輯HTML。這在簡單的情況下工作得很好,但完全容易出錯。
這是說:你應該有這個表達式相當可靠的結果:
<head>.+?</head>
這需要「」以匹配換行符。再次
<head>(?:.|\n|\r)+?</head>
:如果沒有,然後用這個這是容易出錯的,不這樣做。
什麼你應該使用是XML解析器如NSXMLParser
。
點這解釋了爲什麼我的人沒有工作。謝謝。 – Ph99Ph 2011-04-07 19:22:49
公平地說,這是一個常見的誤解,尤其是通過使用正則表達式解析/驗證/編輯html的不合理的在線文章的浪費量。我只能全心全意地推薦閱讀我喜歡的答案中的wiki文章。理解語言的複雜性是一件大事。基本上無所不在的計算機科學/編程。值得一讀。 – Regexident 2011-04-07 19:30:08
要匹配換行符,可以使用修飾符:/
。* <\/head>/s – 2013-04-03 09:18:56請參閱接受的答案RegEx match open tags except XHTML self-contained tags。或者自堆棧溢出開始每天發佈的任何版本的完全相同的問題。
簡而言之,您無法可靠地使用正則表達式解析HTML。由於HTML的複雜性,RegEx不夠先進。
使用這樣的事情:
result = System.Text.RegularExpressions.Regex.Replace(result,
@"<()*head([^>])*>", "<head>",
System.Text.RegularExpressions.RegexOptions.IgnoreCase);
result = System.Text.RegularExpressions.Regex.Replace(result,
@"(<()*(/)()*head()*>)", "</head>",
System.Text.RegularExpressions.RegexOptions.IgnoreCase);
result = System.Text.RegularExpressions.Regex.Replace(result,
"(<head>).*(</head>)", " ",
System.Text.RegularExpressions.RegexOptions.IgnoreCase);
- 1. 正則表達式刪除無標記
- 2. 正則表達式 - 刪除標記
- 3. Vb.net正則表達式 - 從字符串中刪除html標記
- 4. 刪除使用HTML標記的正則表達式
- 5. vbScript到PHP轉換:正則表達式來刪除HTML標記
- 6. JAVA正則表達式來刪除HTML標記和內容
- 7. 從字符串中刪除HTML標記的正則表達式
- 8. 使用正則表達式刪除HTML
- 9. php正則表達式刪除HTML
- 10. HTML標記的正則表達式
- 11. PHP,HTML標記,正則表達式
- 12. 正則表達式禁止HTML標記?
- 13. 正則表達式匹配HTML標記
- 14. 正則表達式忽略HTML標記
- 15. 正則表達式:保留HTML標記,只刪除html特殊字符
- 16. 正則表達式來移除html標記
- 17. 正則表達式選擇除A以外的HTML標記
- 18. Autohotkey正則表達式去除多行中的html標記
- 19. PHP正則表達式刪除標記與特定的詞
- 20. PHP的preg_replace正則表達式刪除空段落標記
- 21. 正則表達式的PowerShell腳本刪除DEBUG標記
- 22. 正則表達式從javascript中刪除特定tr標記
- 23. 正則表達式從tr標記中刪除類屬性
- 24. 正則表達式匹配和刪除標記
- 25. 正則表達式刪除註釋標記
- 26. 刪除子,直到第一個標記的正則表達式
- 27. 正則表達式來刪除自定義標記
- 28. 刪除斷行標記的正則表達式
- 29. 使用正則表達式刪除不必要的XML標記
- 30. 幫助與標記刪除正則表達式
@Don:http://meta.stackexchange.com/questions/73133/ – 2011-04-07 19:18:07
@馬特球:採取 – 2011-04-07 20:08:54