为什么我在为变量分配正则表达式字符串时出错



下面是一个代码示例:

my $testVar = "^.+|gg$";

那行导致了一个错误。它说美元符号应该转义,但我希望整行都匹配,所以我需要^$字符。

Perl有点新,我更愿意将regex语句分配给变量,以便于使用,但不确定如何使用。

如果要生成字符串

^.+|gg$

则必须使用以下文字之一

my $pat = '^.+|gg$';
my $pat = "^.+|gg$";

请注意,$必须在双引号字符串文字中转义,因为$标记了要在双引号的字符串文字中插值的变量的开始。

但是qr更简单,它为您编译了模式。

my $re = qr/^.+|gg$/;

这里有一个应该如何做的例子:

$variable =~ /(find something)/;

如果你想给一个变量分配一个模式,下面是你可以做的:

my $pattern = qr"patern";
my $content = "content";
my @results = $content =~ m/($pattern)/;

事实上,你需要逃离每一个特殊的角色。

最新更新