[#44904] [ruby-trunk - Bug #5688][Open] Solaris10 で spawn を繰り返すとメモリリークする — okkez _ <redmine@...>

14 messages 2011/11/29

[ruby-dev:44851] [ruby-trunk - Feature #5606] String#each_match(regexp)

From: Yui NARUSE <naruse@...>
Date: 2011-11-10 05:48:33 UTC
List: ruby-dev #44851
Issue #5606 has been updated by Yui NARUSE.


String#scan ではダメな理由を、ユースケースを添えて示す必要があると思います。
----------------------------------------
Feature #5606: String#each_match(regexp)
http://redmine.ruby-lang.org/issues/5606

Author: Tomoaki Nishiyama
Status: Open
Priority: Low
Assignee: 
Category: 
Target version: 


文字列上の正規表現に一致する場所のoffsetを順に処理できるような
イテレータが欲しかったのですが、
ざっと検索すると1996年
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/1206
の昔から話はあり、
http://stackoverflow.com/questions/6804557/how-do-i-get-the-match-data-for-all-occurrences-of-a-ruby-regular-expression-in
全くないという事はなくて、それなりに需要がありそうです。

class String
  def each_match(pattern, offset=0)
    while(m = self.match(pattern, offset))
      offset = m.begin(0)+1
      yield m
    end
  end
end

いかがしょうか?
対称にはRegexp#each_matchもですが、、


-- 
http://redmine.ruby-lang.org

In This Thread