Hatena::Grouprubyist

Rubyをラクガク(正規表現編) RSSフィード

2009-12-14

[]アトミック、強欲 アトミック、強欲 - Rubyをラクガク(正規表現編) を含むブックマーク はてなブックマーク - アトミック、強欲 - Rubyをラクガク(正規表現編) アトミック、強欲 - Rubyをラクガク(正規表現編) のブックマークコメント

(?> )

バックトラックを抑止する。

この表現はまだ試験実装中です。将来なくなる可能性もありますので、そのつもりで使ってください。特に汎用ライブラリなどで使ってはいけません。

プログラミング言語 Ruby リファレンスマニュアル

アトミック、強欲等、様々な呼び方があるが、要はバックトラックを抑止されてしまう。

> hoge = "hoge 'foo' 'foo' bar"
> hoge =~ /(?>'.*')\s'foo' bar/ #アトミック。「(?>'.*')が、「'foo' 'foo'」にマッチし、それ以降は「'foo' bar」にマッチできなくなってしまう。
=> nil
> hoge =~ /'.*'\s'foo' bar/ #欲張り。初回は「'foo' 'foo'」にマッチするが、それ以降の「'foo'」に対応できる文字列は見つからないので、バックトラック。
=> 5

ゲスト



トラックバック - http://rubyist.g.hatena.ne.jp/hsyd/20091214