为HTML标签编写正则表达式模式

时间:2011-06-11 08:29:39

标签: regex

我是PHP写作和正则表达式的新手。我需要编写一个正则表达式模式,这将允许我“抓住”以下html标记中的标题:

< title>我的新闻< / title>
  < H1>新闻与LT; / H1>

< h2 class = \“yiv1801001177first \”>这是我的第一个标题< / h2>
< p>这是一篇引人入胜的文章的摘要。< / p>

< h2>这是另一个标题< / h2>
< p>这是一篇引人入胜的文章的摘要。< / p>

< h2>这是第三个标题< / h2>
< p>这是一篇引人入胜的文章的摘要。< / p>

< h2>这是最后一个标题< / h2>
< p>这是一篇引人入胜的文章的摘要。< / p>

所以我需要一个匹配所有< h2>的模式。标签。这是我写作模式的第一次尝试,我正在努力...
/(< h + [2])>(。*?)。< \ / h2> /是我尝试过的。非常感谢帮助!

3 个答案:

答案 0 :(得分:1)

我对PHP并不太熟悉,但在这种情况下,通常更容易使用XML解析器(它会自动检测< h2>以及< h2 class =“无论是什么”>而不是正则表达式,你必须添加一堆特殊情况。例如,Javascript就是为了这个目的而准备了XML DOM,如果PHP没有类似的话,我会感到惊讶。

答案 1 :(得分:1)

通过正则表达式执行此操作的最简单方法是

#<h2\b[^>]*>(.*?)</h2>#is

这将匹配任何h2标记,并在反向引用$1中捕获其内容。我使用#作为正则表达式分隔符以避免在正则表达式中稍后转义/,并使用is选项使正则表达式不区分大小写并允许标记内的换行符内容。

在某些情况下,这个正则表达式会失败,正如本主题中其他人正确指出的那样。

答案 2 :(得分:0)

我只检查了RegexBuddy,以下是正则表达式:

<h2.*</h2>