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