如何使用NSRegularExpression删除HTML文件中的整个head-tag。有人可以给我一个正则表达式吗?
提前致谢, Ph99Ph
答案 0 :(得分:13)
没有! HTML是一种类型2语言,因此无法使用正则表达式进行解析(类型-3)。
如有疑问,请参阅this wiki article。
很多人使用正则表达式来解析/编辑HTML。这在简单的情况下非常有效,但完全容易出错。
这就是说:你应该用这个正则表达式得到相当可靠的结果:
<head>.+?</head>
这需要“。”也匹配换行符。如果没有,请使用:
<head>(?:.|\n|\r)+?</head>
再次:这很容易出错,不要这样做。
应该使用是 XML解析器,例如NSXMLParser
。
答案 1 :(得分:4)
请在RegEx match open tags except XHTML self-contained tags查看已接受的答案。或者自Stack Overflow开始以来每天发布这个完全相同问题的任何版本。
简而言之,您无法使用正则表达式可靠地解析HTML。由于HTML的复杂性,RegEx根本不够先进。
答案 2 :(得分:0)
使用类似的东西:
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);