作者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