匹配不以HTTP开头的Src属性

时间:2012-06-28 14:39:13

标签: perl

我正在尝试匹配所有不以src开头的http属性。

3 个答案:

答案 0 :(得分:2)

那不是“不”运营商。这就是“行首”主播角色。

s!^(?!http)/?!$PATH_BLAH/!这样的东西可能就是你要找的东西。

答案 1 :(得分:2)

您希望将URI解析为绝对URI。使用强大的HTML解析器:

use strictures;
use URI qw();
use Web::Query 'wq';

my $PATH_BLAH = 'http://example.com/blah/';
my $html = <<'HTML';
<html><head></head><body>
<img src="../relative-link" />
<img src="yup/another/one" />
<img src="/oh/I/start/with/a/slash" />
<img src="http://example.net/absolute-link" />
</body></html>
HTML

my $w = wq $html;
$w->find('*[src]')->each(sub {
    my (undef, $e) = @_;
    $e->attr('src', URI->new_abs($e->attr('src'), $PATH_BLAH));
});
print $w->html;

__END__
<html><head></head><body>
<img src="http://example.com/relative-link" />
<img src="http://example.com/blah/yup/another/one" />
<img src="http://example.com/blah/oh/I/start/with/a/slash" />
<img src="http://example.net/absolute-link" />
</body></html>

答案 2 :(得分:0)

那不是Perl。我猜它是正则表达式?而且我猜你正在尝试匹配不包含“http”的字符?如果是这样,你想要

(?:(?!http).)*

(?:(?!STRING).)(?:STRING)[^CHAR]CHAR