回答
有没有! 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. 从字符串中删除HTML标记的正则表达式
- 3. php正则表达式删除HTML
- 4. 使用正则表达式删除HTML
- 5. 正则表达式禁止HTML标记?
- 6. 正则表达式:保留HTML标记,只删除html特殊字符
- 7. 正则表达式来移除html标记
- 8. 正则表达式的PowerShell脚本删除DEBUG标记
- 9. 正则表达式从javascript中删除特定tr标记
- 10. 帮助与标记删除正则表达式
- 11. 删除子,直到第一个标记的正则表达式
- 12. PHP的preg_replace正则表达式删除空段落标记
- 13. 正则表达式删除注释标记
- 14. 使用正则表达式删除不必要的XML标记
- 15. javascript正则表达式删除额外的p标记
- 16. 正则表达式从tr标记中删除类属性
- 17. 正则表达式从img标记中删除引号
- 18. Python的 - 删除HTML标签用正则表达式
- 19. PHP正则表达式删除HTML文档中的标签
- 20. 正则表达式来删除HTML标签
- 21. 在正则表达式中删除HTML标签
- 22. 删除。*正则表达式打破正则表达式
- 23. Python的正则表达式删除Word用正则表达式
- 24. 正则表达式从字符串中删除html标记在Python
- 25. 正则表达式在HTML标记中删除多个空格和换行符
- 26. 正则表达式匹配Html标记和内部Html模式
- 27. 正则表达式删除除
- 28. 正则表达式Markdown标头
- 29. HTML标记替换正则表达式不能正常工作
- 30. 正则表达式解析html标题标记
@Don:http://meta.stackexchange.com/questions/73133/ – 2011-04-07 19:18:07
@马特球:采取 – 2011-04-07 20:08:54