読者です 読者をやめる 読者になる 読者になる

正規表現の置換対象にパターンを指定する場合はシングルクオートで記載しないと動かない

ruby

ちょっとはまったのでメモ。

gsbu等でパターン置換をする場合置換文字列は「"」囲みでは駄目で「']じゃないと期待通り動かない。

ymd = "20090327"
puts ymd.gsub(/(\d{4})(\d{2})(\d{2})/,'\1-\2-\3')
puts ymd.gsub(/(\d{4})(\d{2})(\d{2})/,"\1-\2-\3")

結果は

2009-03-27
--

恐らくバックスラッシュ記法と理解されているのだろう。
なかなか気をつけないと。

ちなみに環境はruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32]