我有一个字符串可能包含特殊字符:$
,(
,@
,#,
等。
我需要能够在该字符串上执行正则表达式。
现在,如果我的字符串中包含任何这些字符,则正则表达式似乎会破坏,因为这些是正则表达式的保留字符。
有没有人知道一个好的子程序可以很好地逃避任何这些角色,以便以后我可以做类似的事情:
$p_id =~ /^$key/
答案 0 :(得分:22)
$p_id =~ /^\Q$key\E/;
答案 1 :(得分:6)
根据你的描述,听起来你倒退了。你不需要转义你匹配的字符串上的字符($ p_id),你需要转义你的匹配字符串'^ $ key'。
假设:
$p_id = '$key$^%*&#@^&%$blah!!';
使用:
$p_id =~ /^\$key/;
或
$p_id =~ /^\Q$key\E/;
\ Q,\ E对将它们之间的所有内容视为文字。换句话说,您不希望查找变量$ key的内容,而是查找实际的字符串'$ key'。第一个例子只是逃避$。