[問題] 正規表示法:有關強制使用原始文字比對的問題

看板Perl作者 (Daira)時間16年前 (2008/01/07 14:39), 編輯推噓3(302)
留言5則, 4人參與, 最新討論串1/1
我有一個放字串的變數(假設是 $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
$_ = '.'; print 'Match' if(/\Q.\E/);
01/07 14:42, 1F

01/07 14:43, , 2F
那你用 index 函式不就好了
01/07 14:43, 2F

01/07 15:11, , 3F
To 1樓,我的問題已經解決了!非常感謝您! ~^^~
01/07 15:11, 3F

01/07 15:12, , 4F
To 2樓,因為在 $pattern 的前後會用到其它的 RegExp
01/07 15:12, 4F

01/07 15:49, , 5F
用 .. 來判斷,另外,有 RegExp 版可以討論
01/07 15:49, 5F
文章代碼(AID): #17WSaMC8 (Perl)