我试图在另一个正则表达式中使用字符串作为正则表达式:
my $e = "a+b";
if ('foo a+b bar' =~ /foo ${e} bar/) {
print 'match!';
}
Run Code Online (Sandbox Code Playgroud)
不起作用,因为 Perl 将其视为+特殊字符。如何在不改变 的值的情况下逃脱它$e?
您可以使用\Qand\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!';
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |