正規表現の先読みの使い道
どんぞこ日誌のsplitに(?=regexp)を渡すを読んで。
うわー、先読みにそんな使い方があったのか…。もちろん知ってもいなかったし全然思いもつかなかったなぁ…。いままで自分が"
"<aa>bb<cc>dd\n<ee>".scan(/<[^<]*/) #=> ["<aa>bb", "<cc>dd\n", "<ee>"]
ってやってるな…。他の言語ならもっとキタナイ正規表現書いていただろうなー。
んでこの先読みを使った正規表現、
'onon'.gsub(/(?=on)/,'k') #=> "konkon"
とかできてわーらくちん。いままでなら
'onon'.scan('on').map{|s| 'k' + s}.join #=> "konkon"
とやってた所だな…。これよりスマートな方法結構ありそうだけど。ってここまで書いて、普通に
'onon'.gsub('on','kon') => "konkon"
ってやれよ!と思った(毎度おなじみおちなし)