正規表現に詳しいサイトはいくらでもありますが、docs.ruby-lang.orgを見ていて、先日痛い目にあった内容を見つけたので抜粋しておきたいと思います。他の言語は知りませんが、Rubyでは正規表現のマッチングアルゴリズムが、通常は「マッチが成功する最長のもの」にヒットしようとするようです。
以下の様な繰り返しを表現するメタ文字列
において、各々の後ろに ? を付加すると、「マッチが成功する最短のもの」になるとのこと。これ知らなくて先日は痛い目を見ました。
*?
+?
などなど。