正则表达式删除HTML-head-tag

时间:2011-04-07 19:09:45

标签: iphone regex cocoa cocoa-touch ios

如何使用NSRegularExpression删除HTML文件中的整个head-tag。有人可以给我一个正则表达式吗?

提前致谢, Ph99Ph

3 个答案:

答案 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);