【发布时间】:2013-09-23 23:45:42
【问题描述】:
我是 Perl 新手,我试图提取字符串中所有 <li> </li> 标记之间的文本,并使用正则表达式或拆分/加入将它们分配到一个数组中。
例如
my $string = "<ul>
<li>hello</li>
<li>there</li>
<li>everyone</li>
</ul>";
所以这段代码...
foreach $value(@array){
print "$value\n";
}
...结果如下:
hello
there
everyone
【问题讨论】:
-
对 HTML 使用正则表达式不是一个好主意。见this answer
-
是的,正则表达式是一个非常错误的工具。
-
regex 不是一个可怕的工具,如果它适合您的需要,请使用它,可能比 HTML 解析器更快。使用 HTML 解析器,您可以知道其有效的 HTML,并且可以遍历树。
-
是的,我认为你对 OP 太苛刻了。他/她不是要求一个复杂的 html 解析器,而是一些合理的东西。只需在
\n上拆分字符串并搜索<li>(.+?)</li>或<li>([^<])之类的内容。我会回答,但我太努力忘记 PERL。