我希望将这些案例中的任何一个与正则表达式匹配。我有标题文本,但我需要将它与(可能的)相应HTML匹配:
<h1>header title</h1>
<h2>site | header title</h2>
<h3 class="header">header title</h3>
<h2>header title 23 jan 2009</h2>
<h1>header title</h1>
我有这个:
/(<(h1|h2|h3))(.+?)".$title."(.+?)(<\/\\2>)/i
但它似乎并不总是奏效,也不明白为什么。
由于
答案 0 :(得分:4)
不要使用正则表达式来解析HTML!而是使用HTML解析器。
答案 1 :(得分:0)
是$title
正则表达式转义(因此{
,[
等字符会被转义吗?
线端可能也有问题;如果你的正则表达式实现支持它,那么应该有多线支持。
最好使用适当的工具处理结构化数据 - 使用XML解析器的XML,使用HTML解析器的HTML。有一些解析器,比如Python中的BeautifulSoup,Ruby中的hpricot,libxml2 ......
答案 2 :(得分:0)
你(逻辑上)想要的例子是:
<(group of anything not including ">"> (Value to extract) <(group of anything not including ">">
e.g。
<[^>]>([^>]+)<[^>]>
具体的正则表达式语法有点依赖于您正在处理的环境。
如果您确定要解析的内容并不比您的示例复杂,那么您可以侥幸成功。但是,你真的不应该用正则表达式解析html(或xml)(正如有人已经在这里指出的那样)因为xml可以任意嵌套,而正则表达式不可能处理它。 / p>