看板 Perl 關於我們 聯絡資訊
我在學習regular expresion時, 寫了以下代碼 @pattern = ("ddd\t rrr", "ddd\tggg"); @match = ("d( |\t)+", "d "); foreach my $p (@pattern) { foreach my $m (@match) { if ($p =~ /$m/) { print ("p:$p match m:$m \n"); } } } print那一行的結果如下: p:ddd rrr match m:d( | )+ p:ddd ggg match m:d( | )+ 請教板上各位先進 是否有辦法print出raw string如下 p:ddd\t rrr match m:d( |\t)+ p:ddd\tggg match m:d( |\t)+ 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.171.160.10 ※ 文章網址: https://www.ptt.cc/bbs/Perl/M.1425297471.A.BB8.html
flu: 雙引號內的跳逸字元會被解釋和替換成其他東西 03/05 01:32
flu: 比如說 $tab = "\t" 就是存TAB進去,不是一個\跟著一個t 03/05 01:33
flu: 所以 perl -e '$v = 'A\t7'; $v2 = eval( "qq{$v}" );' 03/05 01:36
flu: $v裡面有四個字元, 用eval()後$v2裡只有三個字元 03/05 01:39
flu: 承上, print 'yes' if vt2 =~ /^$v$/ # 'yes' 03/05 01:41
flu: ^$v2 03/05 01:42