正規表現の先読みの使い道
どんぞこ日誌のsplitに(?=regexp)を渡すを読んで。
うわー、先読みにそんな使い方があったのか…。もちろん知ってもいなかったし全然思いもつかなかったなぁ…。いままで自分が"bbdd\n"を分割しろつわれたらRubyなら間違いなく
"<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"
ってやれよ!と思った(毎度おなじみおちなし)