Re: [問題] Ruby RegExpr 的疑惑

看板Ruby作者 (godfat 真常)時間16年前 (2007/11/09 23:43), 編輯推噓6(605)
留言11則, 2人參與, 最新討論串4/4 (看更多)
我還是覺得很困惑 @@b irb(main):022:0> puts '\\a\\b\\c'.gsub(/\\/,'\\') \a\b\c irb(main):023:0> puts '\\a\\b\\c'.gsub(/\\/,'\\\\') \a\b\c irb(main):024:0> puts '\\a\\b\\c'.gsub(/\\/,'\\\\\\') \\a\\b\\c irb(main):025:0> puts '\\a\\b\\c'.gsub(/\\/,'\\\\\\\\') \\a\\b\\c irb(main):026:0> puts '\\a\\b\\c'.gsub(/\\/,'\\\\\\\\\\') \\\a\\\b\\\c 我記得之前就碰過這個問題了,我是 trial & error 弄到對就不管了 不過我想可能跟這個有關吧 = = irb(main):038:0> puts '\a' \a irb(main):039:0> puts '\\a' \a irb(main):040:0> puts '\\\a' \\a irb(main):041:0> puts '\\\\a' \\a -- In Lisp, you don't just write your program down toward the language, you also build the language up toward your program. 《Programming Bottom-Up》- Paul Graham 1993 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.28.18

11/09 23:54, , 1F
如果你能了解下面的4個puts結果,應該就沒問題了吧
11/09 23:54, 1F

11/10 00:04, , 2F
啊,replace 前就變了,我懂了。循其本,這樣的意義?
11/10 00:04, 2F

11/10 00:44, , 3F
第1次escape character是把string literal轉成string value
11/10 00:44, 3F

11/10 00:46, , 4F
第2次則是因為取代的字串可以包含控制字元,所以要再
11/10 00:46, 4F

11/10 00:48, , 5F
escape character
11/10 00:48, 5F

11/10 01:27, , 6F
我的意思是 '\\a' 和 '\a' 等價的意義?
11/10 01:27, 6F

11/10 01:35, , 7F
single quote 只處理 "\" "'", 所以'\\a'的第1個\後有\,
11/10 01:35, 7F

11/10 01:38, , 8F
所以2個\\變成 \, 但是'\a'中的\後面不是"\" or "'",
11/10 01:38, 8F

11/10 01:39, , 9F
所以不用轉,直接等於\
11/10 01:39, 9F

11/10 01:40, , 10F
'\\a' 和 '\a' 的值都是 \a
11/10 01:40, 10F

11/10 02:04, , 11F
ok, 我大概懂你的意思了,感謝 :D
11/10 02:04, 11F
文章代碼(AID): #17D80_6_ (Ruby)
文章代碼(AID): #17D80_6_ (Ruby)