我很难确定在使用 Perl 的 qr{} 构造时必须转义哪些字符
我正在尝试为包含无数通常转义字符(#*.>:[])并且还包含另一个预编译正则表达式的文本创建多行预编译正则表达式。此外,出于测试目的,我需要尽可能严格地匹配。
my $output = q{# using defaults found in .config
*
*
Options:
1. opt1
> 2. opt2
choice[1-2?]: };
my $sc = qr{(>|\s)}smx;
my $re = qr{# using defaults found in .config
*
*
Options:
$sc 1. opt1
$sc 2. opt2
choice[1-2?]: }mx;
if ( $output =~ $re ) {
print "OK!\n";
}
else {
print "D'oh!\n";
}
错误:
Quantifier follows nothing in regex; marked by <-- HERE in m/# using defaults found in .config
* <-- HERE
*
Options:
(?msx-i:(>|\s)) 1. opt1
(?msx-i:(>|\s)) 2. opt2
choice[1-2?]: / at ./so.pl line 14.
尝试转义星号会导致匹配失败(D'oh 输出)。试图逃避其他讨厌的字符也会导致匹配失败。我可以继续尝试不同的组合来逃避什么,但这里有很多变化,希望有人能提供一些见解。