Ruby sub与gsub要注意的地方

本文主要参考<The Ruby Way> 74页

字符串在使用sub和gsub方法时,不能使用$1,$2来替换

   "abc11abc".gsub(/\w+(\d+)\w+/,"abc#{$1}def")

运行这段代码,你会发现$1为空,如果在IRB中,第二次调用时就不会为空了,因为把上次的结果保存到$1

应该这样写
"abc11abc".gsub(/\w+(\d+)\w+/,"abc\\1def")


替换字符用单引号时,只要一个"\"
"abc11abc".gsub(/\w+(\d+)\w+/,"abc\1def")


在双引号中,反斜杠会把后面的字符串解释为八进制转义序列.

你可能感兴趣的:(Ruby,正则)