perl 如何在将正则表达式包含在另一个正则表达式中时对其进行转义?

u3r8eeie  于 2022-11-15  发布在  Perl
关注(0)|答案(1)|浏览(198)

我尝试在另一个正则表达式中使用字符串作为正则表达式:

my $e = "a+b";
if ('foo a+b bar' =~ /foo ${e} bar/) {
    print 'match!';
}

不起作用,因为Perl将+视为特殊字符。如何在不更改$e的值的情况下对其进行转义?

dy2hfwbg

dy2hfwbg1#

您可以使用\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!';
}

相关问题