我有一份清单,列出我想在座的格局。 这些模式是多种多样的,包含着无数的果园,我想说的是,这些果园是真的。 因此,这完全适用于引用<代码>的计量。 Q.E。 复杂性在于,我需要加入各种模式清单,定期表达。
use strict;
use warnings;
# sample string to represent my problem
my $string = "{{a|!}} Abra
{{b|!!}} {{b}} Hocus {{s|?}} Kedabra
{{b|+?}} {{b|??}} Pocus
{{s|?}}Alakazam
";
# sample patterns to look for
my @patterns = qw({{a|!}} {{s|?}} {{s|+?}} {{b|?}});
# since these patterns can be anything, I join the resulting array into a variable-length regex
my $regex = join("|",@patterns);
my @matched = $string =~ /$regex(sw+s)/; # Error in matching regex due to unquoted metacharacters
print join("", @matched); # intended result: Hocus
Pocus
当我试图在加入行动中引入美文时,似乎没有任何效果。
# quote all patterns so that they match literally, but make sure the alternating metacharacter works as intended
my $qmregex = "Q".join("E|Q", @patterns)."E";
my @matched = $string =~ /$qmregex(sw+s)/; # The same error
出于某种原因,在插图一中,该缩略语作为常规表达方式时,不会产生影响。 对我来说,他们只是在直接添加到<条码>/Q$anexpressionE/的栏目中时,才工作,但就我而言,我可以说,这并不是一种选择。 我如何处理这个问题?