perl 正则表达式 pattern使用变量时应该注意的问题

当正则表达式中的pattern部分使用变量时,应当注意转义符的解释问题。

my $a = "MGI:87854|Ensembl:ENSMUSG00000030359";
my $pattern = "MGI:\d+";
if($a =~ /$pattern/){
print "$&\n";
}

这样写本来的意图是匹配MGI:87854,但是却达不到效果,是因为逃逸符本身没有被逃逸而被perl解释器解释掉了,所以应当这样写pattern:

my $pattern = "MGI:\\d+";

注意,若将双引号换成但引号,则pattern仍可写成MGI:\d+形式,这也说明perl对引号的解释机制类似于bash,双引号的解释强度强于单引号,单引号中\不被解释称转义字符。

另外,若想匹配在正则表达式系统中有特殊含义的字符:\,|,^,$,则需要在pattern中提前加一个转义\。

posted on 2011-11-29 15:18 ewre 阅读(813) 评论(0)  编辑 收藏 引用 所属分类: Scripting language


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

留言簿(2)

文章分类

文章档案

最新评论

阅读排行榜