[問題] 正規表示法:有關強制使用原始文字比對的問題
我有一個放字串的變數(假設是 $pattern)
然後我想在另一個變數(假設是 $string)中比對是否存在 $pattern
所以我寫成
$string =~ /$pattern/;
但是現在的問題是如果 $pattern 裡有包含正規表示法的特殊字元(如 \ . * ? + 等)
會被當成正規表示法的一部份去解譯
但我不希望發生這樣的事,我想單純讓 $pattern 當做文字來比對就好
我本來是打算用
$pattern =~ s/(\\|\.|\*|\?|\+)/\\\1/g;
先把 $pattern 裡的特殊字元都取代成跳脫字元,再來做處理
但是我認為這不是正確的解決辦法,所以想來問大家有沒有比較快速的解決辦法
(不然就要每次做比對前都要先取代一次 >"<)
* * * *
怕有人看不懂我的意思,所以我舉個例子
$pattern = '.';
當 $string =~ /$pattern/; 時
只要 $string 有任意字元,就會傳回 true 了
但這不是我要的
我的目的是真的要看 $string 裡是否有 '.' 字元 ^^"
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.130.193.181
推
01/07 14:42, , 1F
01/07 14:42, 1F
推
01/07 14:43, , 2F
01/07 14:43, 2F
→
01/07 15:11, , 3F
01/07 15:11, 3F
→
01/07 15:12, , 4F
01/07 15:12, 4F
推
01/07 15:49, , 5F
01/07 15:49, 5F