2

当我尝试在 Perl 脚本中实现预编译的正则表达式时,我遇到了一些匹配问题。我的脚本在没有预编译的情况下工作,并且任何时候我有一个跨行的快递,它在预编译时返回不匹配。例如:

my $regex_partner = qr/<h1 id="PartnerName">(?<partner_name>.*?)<\/h1>/;
$content =~ $regex_partner;
$partner_name = $+{partner_name};

预编译时工作正常,但是:

my $regex_web =~ qr/Company Website:.*openWindow[(]'(?<website>http:\/\/.*?)'/s;
$content =~ $regex_web;
$website = $+{website};

什么都不返回,但如果我取出整个预编译,它就可以工作。似乎任何时候使用 qr//s 都不起作用。

帮助?

4

1 回答 1

9

你有一个错字。

my $regex_web =~ qr/.../s;

那应该是:

my $regex_web = qr/.../s;

前者正在对$regex_web. 后者将模式分配给 $regex_web。如果出现警告,您将收到“在模式匹配中使用未初始化的值 $regex_web”警告。

除非你的帖子有错别字?

于 2011-11-21T18:26:41.517 回答