Regex 使用perl从HTML中提取节内容

Regex 使用perl从HTML中提取节内容,regex,perl,html-parsing,Regex,Perl,Html Parsing,我希望使用perl以HTML字符串的形式获取节标记的所有内容。我正在使用以下代码行,但它似乎不起作用: $article_content =~ s/^.*?<section>(.*)<\/section>.*?$/$1/; 将。*更改为。*?看看这是否有帮助。不要使用正则表达式来解析HTML。无法使用正则表达式可靠地解析HTML。一旦HTML改变了您的预期,您的代码就会被破坏。有关如何使用Perl模块正确解析HTML的示例,请参见。匹配任何字符,但只有在使用/s时才是这

我希望使用perl以HTML字符串的形式获取节标记的所有内容。我正在使用以下代码行,但它似乎不起作用:

$article_content =~ s/^.*?<section>(.*)<\/section>.*?$/$1/;

将。*更改为。*?看看这是否有帮助。

不要使用正则表达式来解析HTML。无法使用正则表达式可靠地解析HTML。一旦HTML改变了您的预期,您的代码就会被破坏。有关如何使用Perl模块正确解析HTML的示例,请参见。匹配任何字符,但只有在使用/s时才是这种情况。

importional@jordanm importional响应:感谢您的评论。非常有教育意义。@Cyborgx37我相信tchrist的那篇文章包含了一定程度的讽刺。@TLP-也许,但根据我的经验,说这种方式是可能的更有效,但非常困难。这种方法简单得多。然后说不要那样做。这样做。这种方式更好,因为你不能理解的原因。这并不完全正确。看见正确的回答应该是:用正则表达式解析HTML是很困难的。考虑一些比较容易的事情,比如XYZ,对初学者来说已经足够了。汤姆·克里斯汀森知道规则,所以他可以违反规则。OP不会。一旦HTML改变了您的期望值,无论您如何从HTML中提取数据,它都可能会破坏您的代码。我要说的是,OP查找的代码将在每次变成或时中断,这是完全有效的,不应该改变他的程序的行为。工程师们对无法解决的问题着迷。告诉我有些事做不到,我会本能地试图证明你错了。但是,告诉我,有些事情是非常困难的,几乎没有回报,我会跟随你到任何地方寻找一个更简单的解决方案。例如,abc->xyzAnd,是的,给定@Cyborgx37示例,我的方法不起作用。但是,由于我们公司也在生成内容,我希望这不会发生……那么这两个变体的捕获组最终会是什么呢?i、 对于这种情况,在我添加了/s选项之后,它是相同的。如果我理解正确,*?这是非贪婪的方式,因为我们的htmls中只有一个标记,.*和。*?有同样的结果…没错,现在我知道你只有一个。然而,对于这种匹配,我并不是说您是否正在使用HTML,您应该明智地使用。*?作为一种习惯。当你在你想要匹配的群体前后都知道一些事情时,你几乎总是想要不贪婪的。