如何在Perl中替换不属于锚标记的文本?

zyl*_*tra 2 regex anchor perl text

什么是Perl正则表达式可以替换不属于锚标记的选择文本?例如,我想只替换以下代码中的最后一个"文本".

blah <a href="http://www.text.com"> blah text blah </a> blah text blah.
Run Code Online (Sandbox Code Playgroud)

谢谢.

cjm*_*cjm 8

您不想尝试使用正则表达式解析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
Run Code Online (Sandbox Code Playgroud)