正则表达式匹配问题

时间:2010-02-12 14:49:57

标签: regex

我希望将这些案例中的任何一个与正则表达式匹配。我有标题文本,但我需要将它与(可能的)相应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

但它似乎并不总是奏效,也不明白为什么。

由于

3 个答案:

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