我有
my %id_to_name = (
51803 => 'Jim bob and associates',
);
while (my ($key, $value) = each %id_to_name) {
$regex = qr/^.*?$value.*?$/;
$value = $regex;
我基本上希望将$value
与:
a bunch of random text blah blah 'Jim bob and associates' blah blah.
由于之前和之后的所有文字,我似乎无法得到匹配。
我正在尝试qr//
,但它似乎不起作用。有什么建议吗?
答案 0 :(得分:0)
看起来您不需要正则表达式... index
函数可以让您检查字符串是否包含子字符串。
print $value if index($input, $value) >= 0;
仅供参考,正则表达式的解决方案是:
print $value if $input =~ m/\Q$value\E/;
如果需要修饰符(例如i
用于不区分大小写的匹配),则可以使用它。 \Q...\E
就像quotemeta
。
答案 1 :(得分:0)
在Perl 5.18.2上,这可行:
my %id_to_name = (
51803 => 'Jim bob and associates',
);
while (my ($key, $value) = each %id_to_name) {
$regex = qr/^.*?$value.*?$/;
print "$regex\n";
$test="a bunch of random text blah blah 'Jim bob and associates' blah blah.";
print "match" if $test =~/$value/;
}
打印:
(?^:^.*?Jim bob and associates.*?$)
match
正如评论中所述,领先和尾随.*?
毫无意义。