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