perl正则
perl 高手帮忙看看: 正则表达式替换 就是 =~ s/// 能不能在其中有变量?比如 $a=~s/ddd/$cc/ ;我试了不行啊 出错 应该怎么解决呢?
可以. 但在变数前後要加上 \Q 和 \E, 即是 $str =~ s/ddd/\Q$cc\E/;
否则.. 如果 $cc = "home/bin" , 那表达式读到那个 / 号时就会当成完结, 即是会解读成
$str =~ s
/ddd <-- 寻找
/home <-- 取代
/bin/; <-- 错误
\Q quote (disable) pattern metacharacters till \E
意思是让$就是$..不是变量的开始符..
$start = "ABC";
$start 就是\$start不是 ABC
用术语来解释的话,就是说,\Q 取消所有元字符的含义直到遇见 \E 为止。
说得通俗一点,就是说,Perl 中有些字符在模式匹配中出现时,有特殊的含义,
\Q 的作用就是让这些原本有特殊含义的字符,一律失效,只把它当作一个普通的字符来处理,
比如在你的例子中,如果 $site 里面有元字符的话,可能会导致正则表达式匹配失败,所以需要加上 \Q。
页:
[1]