正規表現

入れ子のマッチ

正規表現の中に自己を含めて循環定義できるRubyやPerlなどの処理系なら、入れ子もなんとか処理できるみたいです。 括弧のパターンにマッチすると、その都度中身の正規表現がlazyに変わっていくというトリッキーな技です。 http://leoclock.blogspot.com/2009…

複数行での/./と/$/の扱い

以下の2点の各処理系での調査結果。 1.任意の1文字/./に改行は含まれるか?→"\n"=~/./でテスト。 2.行末/$/は途中の改行も含まれるか?→"1\n2"=~/1$/でテスト。 Perlの場合 テスト1 テスト2 マッチする "\n"=~/./s "1\n2"=~/1$/m マッチしない "\n"=~/./ "1\…

行頭/^/のみでの置換は無限ループに注意

aaa bbb↓ >aaa >bbbこういう処理を考える。 Rubyの場合 普通に/^/を">"に置換すればいい。 irb> "aaa\nbbb\n".gsub(/^/,">") => ">aaa\n>bbb\n" Gaucheの場合 rubyと同様に#/^/を">"に置換しようとすると無限ループになってしまう。 gosh> (regexp-replace-a…