什麼是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