我有可能持有等特殊字符的字符串:$,(,@,#,等我需要能够对字符串进行正则表达式.
现在,如果我的字符串具有任何这些字符,则正则表达式似乎会破坏,因为这些是正则表达式的保留字符.
有没有人知道一个好的子程序,可以很好地逃避任何这些字符给我,以便以后我可以做类似的事情:
$p_id =~ /^$key/
Run Code Online (Sandbox Code Playgroud)
Яeg*_*ght 22
$p_id =~ /^\Q$key\E/;
Run Code Online (Sandbox Code Playgroud)
根据你的描述,听起来你倒退了.你不需要转义你匹配的字符串上的字符($ p_id),你需要转义你的匹配字符串'^ $ key'.
鉴于:
$p_id = '$key$^%*&#@^&%$blah!!';
Run Code Online (Sandbox Code Playgroud)
使用:
$p_id =~ /^\$key/;
Run Code Online (Sandbox Code Playgroud)
要么
$p_id =~ /^\Q$key\E/;
Run Code Online (Sandbox Code Playgroud)
\ Q,\ E对将它们之间的所有内容视为文字.换句话说,您不希望查找变量$ key的内容,而是查找实际的字符串'$ key'.第一个例子简单地逃避$.