什么是Perl的正则表达式,可以替代选择文本,是不是一个锚标记的一部分吗?例如,我想只替换下面代码中的最后一个“文本”。如何替换不属于Perl中锚定标记的文本?
blah <a href="http://www.text.com"> blah text blah </a> blah text blah.
谢谢。
什么是Perl的正则表达式,可以替代选择文本,是不是一个锚标记的一部分吗?例如,我想只替换下面代码中的最后一个“文本”。如何替换不属于Perl中锚定标记的文本?
blah <a href="http://www.text.com"> blah text blah </a> blah text blah.
谢谢。
我暂时占了上风:
$html =~ s|(text)([^<>]*?<)(?!\/a>)|replacement$2|is;
但我沮丧,感到沮丧,并通过seminal text娇贵;所以在后续的工作中追求Treebuilder。
不要使用正则表达式对这种东西。使用一些适当的HTML解析器,而只需使用普通的正则表达式为你感兴趣的HTML的部分。
你不想尝试用正则表达式解析HTML。改为尝试HTML::TreeBuilder。
use HTML::TreeBuilder;
my $html = HTML::TreeBuilder->new_from_file('file.html');
# or some other method, depending on where your HTML is
doReplace($html);
sub doReplace
{
my $elt = shift;
foreach my $node ($elt->content_refs_list) {
if (ref $$node) {
doReplace($$node) unless $$node->tag eq 'a';
} else {
$$node =~ s/text/replacement/g;
} # end else this is a text node
} # end foreach $node
} # end doReplace
一饮而尽。正则表达式和HTML。去隐藏... – 2010-01-25 10:12:07
不是第一个和最后两个“blahs”还“不是锚标记的一部分?” – Jay 2010-01-25 10:12:32
@Jay - 我假设OP想'magic_replace(html,'text','link still ok')' – Kobi 2010-01-25 10:19:42