我是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> /是我尝试过的。非常感谢帮助!
答案 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>