[問題] 特殊字元比對

看板Perl作者 (我本善良)時間17年前 (2008/08/01 15:29), 編輯推噓1(107)
留言8則, 3人參與, 最新討論串1/1
不好意思,又上來請教問^^" 關於特殊字元的比對該如何處理 一般來說,如果是遇到 [ ] 可以寫成 /\[/ or /\]/ 但是如果今天是儲存在一個變數裡面 比如 $a = a[1] $line =~ /$a/ 就算$line有 a[1] 這個 pattern perl 卻不會處理 我的例子如下: 如果$line與pattern完全一樣的情況下,我會解決 假設 $a = a[1] , $line = a[1] 這樣子可以用 $line eq $a 若 $line = a[1] a[2] a[3] $line不等於$a,但是有出現$a的pattern 而寫成 $line =~ /$a/ 就會比對失敗 請問有什麼辦法可以解決嗎 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.248.184.238

08/01 19:54, , 1F
把 $a 改成 a\\[1\\] 呢 ? 這樣比對式中才會是 /a\[1\]/
08/01 19:54, 1F

08/01 20:13, , 2F
不好意思,有一點不太了解 "a\\[1\\]" 的意思
08/01 20:13, 2F

08/01 20:13, , 3F
$a是從檔案讀進來,先儲存到array裡面,然後再進行比對
08/01 20:13, 3F

08/01 20:14, , 4F
所以我應該要去處理檔案囉?這個方法我有想過,不過覺得
08/01 20:14, 4F

08/01 20:15, , 5F
應該會有更好的解決方法XDD 謝謝你的回答^^
08/01 20:15, 5F

08/01 20:18, , 6F
$line =~ /\Q$a\E/ 或 index($line, $a) >= 0
08/01 20:18, 6F

08/01 20:33, , 7F
謝謝你,第二個方法我看的懂..第一個\E與\Q 看不太懂^^"
08/01 20:33, 7F

08/01 22:09, , 8F
謝謝Andor,關於\E\Q,可以參考quotemeta
08/01 22:09, 8F
文章代碼(AID): #18ahjD6i (Perl)
文章代碼(AID): #18ahjD6i (Perl)