Regex 如何转义插入Perl正则表达式的字符串中的特殊字符?

Regex 如何转义插入Perl正则表达式的字符串中的特殊字符?,regex,perl,Regex,Perl,我有一个字符串,它可能包含特殊字符,如:$,(,@,#,等。 我需要能够对该字符串执行正则表达式 现在,如果我的字符串包含这些字符中的任何一个,正则表达式似乎会中断,因为这些是正则表达式的保留字符 是否有人知道一个好的子程序,可以很好地为我转义这些字符,以便以后我可以执行以下操作: $p_id =~ /^$key/ 根据您的描述,这听起来像是反向的。您不需要转义要匹配的字符串($p_id)上的字符,您需要转义匹配字符串“^$key” 鉴于: $p_id = '$key$^%*&#@^

我有一个字符串,它可能包含特殊字符,如:
$
@
#,
等。 我需要能够对该字符串执行正则表达式

现在,如果我的字符串包含这些字符中的任何一个,正则表达式似乎会中断,因为这些是正则表达式的保留字符

是否有人知道一个好的子程序,可以很好地为我转义这些字符,以便以后我可以执行以下操作:

 $p_id =~ /^$key/

根据您的描述,这听起来像是反向的。您不需要转义要匹配的字符串($p_id)上的字符,您需要转义匹配字符串“^$key”

鉴于:

$p_id = '$key$^%*&#@^&%$blah!!';
使用:


\Q,\E对将两者之间的所有内容都视为文字。换句话说,您不想查找变量$key的内容,而是要查找实际字符串“$key”。第一个示例只是转义$。

引号和尾引号。这意味着$key被视为一个不带特殊字符的字符串。请注意,在代码高尔夫游戏中,
\如果在正则表达式末尾,E
是可选的。重复:可能的重复
$p_id = '$key$^%*&#@^&%$blah!!';
$p_id =~ /^\$key/;
$p_id =~ /^\Q$key\E/;