最短マッチ・貪欲じゃなくする
スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
正規表現では、色々な記号が使われますが、それぞれの記号の意味は以下のRubyリファレンスが参考になります。
スポンサーリンク
Rubyの正規表現は、Perlとほとんど同じですので、Perlで正規表現の経験があれば、新たに覚える必要はないです。
個人的に正規表現で忘れやすい点、知らないことに関してのみ、エントリーを書いていますので、随時マニュアルなどを参照お願いします。
繰り返しを表す「*」(0回以上)、「+」(1回以上)を用いた正規表現は、貪欲にマッチしようとします。
貪欲にマッチとは、できるだけ長い文字列を食べてしまおうとする(マッチしようとする)ということです。
これらの繰り返し指定の記号の後に、「?」をつけることで、マッチを貪欲じゃなく、最短にすることができます。
str = "abcabcabc" print /a.*c/ =~ str, " :", $&, "\n" # 正規表現は貪欲にマッチする print /a.*?c/ =~ str, " :", $&, "\n" # ?で最短マッチになる。貪欲じゃなくなる! print /b.+b/ =~ str, " :", $&, "\n" # 貪欲マッチ print /b.+?b/ =~ str, " :", $&, "\n" # 最短マッチ
実行結果。
0 :abcabcabc 0 :abc 1 :bcabcab 1 :bcab
スポンサーリンク
>> 次の記事 : sub, gsubメソッドで置換を行う
<< 前の記事 : =~メソッドでRuby正規表現のパターンマッチング
スポンサーリンク