作者godfat (godfat 真常)
看板Ruby
標題Re: [問題] Ruby RegExpr 的疑惑
時間Fri Nov 9 23:43:57 2007
我還是覺得很困惑 @@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
1F:推 zhadow:如果你能了解下面的4個puts結果,應該就沒問題了吧 11/09 23:54
2F:推 godfat:啊,replace 前就變了,我懂了。循其本,這樣的意義? 11/10 00:04
3F:推 zhadow:第1次escape character是把string literal轉成string value 11/10 00:44
4F:→ zhadow:第2次則是因為取代的字串可以包含控制字元,所以要再 11/10 00:46
5F:→ zhadow:escape character 11/10 00:48
6F:推 godfat:我的意思是 '\\a' 和 '\a' 等價的意義? 11/10 01:27
7F:推 zhadow:single quote 只處理 "\" "'", 所以'\\a'的第1個\後有\, 11/10 01:35
8F:→ zhadow:所以2個\\變成 \, 但是'\a'中的\後面不是"\" or "'", 11/10 01:38
9F:→ zhadow:所以不用轉,直接等於\ 11/10 01:39
10F:→ zhadow:'\\a' 和 '\a' 的值都是 \a 11/10 01:40
11F:推 godfat:ok, 我大概懂你的意思了,感謝 :D 11/10 02:04