Regex 为HTML标记编写正则表达式模式

Regex 为HTML标记编写正则表达式模式,regex,Regex,我对PHP编写和正则表达式非常陌生。我需要编写一个正则表达式模式,允许我“抓取”以下html标记中的标题: 我的新闻 新闻 这是我的第一个标题这是一篇精彩文章的摘要这是另一个标题这是一篇精彩文章的摘要这是第三个标题这是一篇精彩文章的摘要。这是最后一个标题这是一篇精彩文章的摘要 所以我需要一个模式来匹配所有的标签。这是我第一次尝试写一个模式,我正在努力。。。 /((.*)\/是我所尝试的。非常感谢您的帮助!我对PHP不太熟悉,但在这种情况下,使用XML解析器通常更容易(这将自动检测,而不是rege

我对PHP编写和正则表达式非常陌生。我需要编写一个正则表达式模式,允许我“抓取”以下html标记中的标题:

我的新闻
新闻 这是我的第一个标题这是一篇精彩文章的摘要这是另一个标题这是一篇精彩文章的摘要这是第三个标题
这是一篇精彩文章的摘要。

这是最后一个标题
这是一篇精彩文章的摘要

所以我需要一个模式来匹配所有的标签。这是我第一次尝试写一个模式,我正在努力。。。

/((.*)\/是我所尝试的。非常感谢您的帮助!

我对PHP不太熟悉,但在这种情况下,使用XML解析器通常更容易(这将自动检测,而不是regex,您必须向.Javascript添加一系列特殊情况,例如,有XML DOM正是出于此目的,如果PHP没有类似的东西,我会感到惊讶。

我只签入了RegexBuddy,有以下regex工作:

<h2.*</h2>

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

#<h2\b[^>]*>(.*?)</h2>#is
#]*>(.*)是
这将匹配任何
h2
标记,并在backreference
$1
中捕获其内容。我使用了
#
作为正则表达式分隔符,以避免稍后在正则表达式中转义
/
,并且
选项,以使正则表达式不区分大小写,并允许在标记内容中出现换行


但是,正如本线程中其他人正确指出的那样,在某些情况下,此正则表达式将失败。

也许您可以检查以下类似问题:这说明了如何编写正则表达式来解析HTML。欢迎使用StackOverflow。一点提示:如果您想发布代码和/或HTML,请将其按原样粘贴到编辑框中x、 然后突出显示它并按Ctrl-K。这样你就不必处理HTML实体和转义,代码也就更容易阅读了。是的,我意识到可能有更好的方法来实现这一点,但这是为了分配,它特别要求我使用正则表达式编写PHP脚本,然后输出它作为一个无序的列表…@Jo W,温和地解释一下对该作业施加此类要求的人,让他去看医生。然后使用HTML解析器来解决该作业。如果你想学习正则表达式,将其应用于HTML将是最糟糕的例子。