我尝试在另一个正则表达式中使用字符串作为正则表达式:
my $e = "a+b"; if ('foo a+b bar' =~ /foo ${e} bar/) { print 'match!'; }
不起作用,因为Perl将+视为特殊字符。如何在不更改$e的值的情况下对其进行转义?
+
$e
dy2hfwbg1#
您可以使用\Q和\E,这会将它们之间的正则表达式元字符视为文字:
\Q
\E
#!/usr/bin/env perl use strict; use warnings; use feature qw/say/; my $e = "a+b"; if ('foo a+b bar' =~ /foo \Q$e\E bar/) { say 'match!'; }
1条答案
按热度按时间dy2hfwbg1#
您可以使用
\Q
和\E
,这会将它们之间的正则表达式元字符视为文字: