我有一个字符串,我希望在正则表达式中使用它,就像m/$mystring_03/
一样,但是$mystring
包含导致问题的+ s和斜杠。在Perl中是否有一种简单的方法来修改$mystring
以确保所有正则表达式通配符或其他特殊字符都被正确转义? (就像所有+
变成\+
)
答案 0 :(得分:13)
是的,请使用\Q
and \E
escapes:
#!/usr/bin/perl
use strict;
use warnings;
my $text = "a+";
print
$text =~ /^$text$/ ? "matched" : "didn't match", "\n",
$text =~ /^\Q$text\E$/ ? "matched" : "didn't match", "\n";
答案 1 :(得分:10)
quotemeta函数可以满足您的要求。
答案 2 :(得分:1)
如果您要转义字符串中正则表达式的所有特殊字符,您也可以使用rindex
index($_, "$mystring_03")
返回要测试的字符串中字符串的索引;如果未找到匹配项,则返回-1。