看板 Perl 關於我們 聯絡資訊
不好意思,又上來請教問^^" 關於特殊字元的比對該如何處理 一般來說,如果是遇到 [ ] 可以寫成 /\[/ 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
srwff:把 $a 改成 a\\[1\\] 呢 ? 這樣比對式中才會是 /a\[1\]/ 08/01 19:54
DreamYEN:不好意思,有一點不太了解 "a\\[1\\]" 的意思 08/01 20:13
DreamYEN:$a是從檔案讀進來,先儲存到array裡面,然後再進行比對 08/01 20:13
DreamYEN:所以我應該要去處理檔案囉?這個方法我有想過,不過覺得 08/01 20:14
DreamYEN:應該會有更好的解決方法XDD 謝謝你的回答^^ 08/01 20:15
Andor:$line =~ /\Q$a\E/ 或 index($line, $a) >= 0 08/01 20:18
DreamYEN:謝謝你,第二個方法我看的懂..第一個\E與\Q 看不太懂^^" 08/01 20:33
DreamYEN:謝謝Andor,關於\E\Q,可以參考quotemeta 08/01 22:09