[#45341] 非同期割り込みに対する対処案(日本語版) — SASADA Koichi <ko1@...>

 ささだです.

28 messages 2012/03/11
[#45816] Re: 非同期割り込みに対する対処案(日本語版) — SASADA Koichi <ko1@...> 2012/06/25

 ささだです.

[#45817] Re: 非同期割り込みに対する対処案(日本語版) — Tanaka Akira <akr@...> 2012/06/25

2012年6月25日 18:26 SASADA Koichi <[email protected]>:

[#45819] Re: 非同期割り込みに対する対処案(日本語版) — SASADA Koichi <ko1@...> 2012/06/25

 ささだです.

[#45820] Re: 非同期割り込みに対する対処案(日本語版) — Tanaka Akira <akr@...> 2012/06/25

2012年6月25日 19:39 SASADA Koichi <[email protected]>:

[#45827] Re: 非同期割り込みに対する対処案(日本語版) — SASADA Koichi <ko1@...> 2012/06/25

(2012/06/25 20:32), Tanaka Akira wrote:

[#45841] Re: 非同期割り込みに対する対処案(日本語版) — Tanaka Akira <akr@...> 2012/06/25

2012年6月26日 3:40 SASADA Koichi <[email protected]>:

[#45844] Re: 非同期割り込みに対する対処案(日本語版) — SASADA Koichi <ko1@...> 2012/06/25

(2012/06/26 5:07), Tanaka Akira wrote:

[#45372] Marshal.dumpにおけるインスタンス変数の取り扱いについて — keiju@... (Keiju ISHITSUKA)

けいじゅ@いしつかです.

14 messages 2012/03/16
[#45376] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて — Yukihiro Matsumoto <matz@...> 2012/03/17

まつもと ゆきひろです

[#45377] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて — keiju@... (石塚圭樹) 2012/03/17

けいじゅ@いしつかです.

[#45381] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて — Yukihiro Matsumoto <matz@...> 2012/03/17

まつもと ゆきひろです

[#45399] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて — keiju@... (石塚圭樹) 2012/03/18

けいじゅ@いしつかです.

[#45412] [ruby-trunk - Feature #6177][Open] array.cのrb_ary_equal()の高速化 — "Glass_saga (Masaki Matsushita)" <glass.saga@...>

13 messages 2012/03/20

[#45471] [ruby-trunk - Bug #6230][Open] [WEBrick] WEBrick::HTTPResponse#body の IO オブジェクトの読み込みに read メソッドを使っているため必要以上にブロックされる — "nobuoka (yu nobuoka)" <nobuoka@...>

7 messages 2012/03/30

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

From: "mame (Yusuke Endoh)" <mame@...>
Date: 2012-03-27 15:07:33 UTC
List: ruby-dev #45446
Issue #5606 has been updated by mame (Yusuke Endoh).

Status changed from Open to Feedback

遠藤です。

2011年11月10日17:19 Tomoaki Nishiyama <[email protected]>:
> String#scan ではダメかというと
>
>  longstring.scan(regex) do |matchstr|
>    m=Regexp.last_match
>    ...
>    puts "#{m.begin(0)}-#{m.end(0)-1} some other info"
>  end
>
> でとれば確かにとれるらしいけど、いかにもトリッキーな気がしますので、

$~ を使うのが普通です。

  longstring.scan(regex) do
    ...
    puts "#{$~.begin(0)}-#{$~.end(0)-1} some other info"
  end


「いかにもトリッキー」というほどトリッキーとは思いませんが、
気持ちはわかります。しかし、String#scan と String#gsub の
ブロックパラメータをそろえろ! (#546) という話に関係しなく
もなく、話が進みにくいタイプの提案だと思いました。
機会を見つけてまつもとさんに直談判することをお勧めします。


いずれにせよ、ユースケースを示してください。


ところで、参照実装で

  offset = m.end(0)

でなく

  offset = m.begin(0)+1

になってるのは意図的でしょうか。

-- 
Yusuke Endoh <[email protected]>
----------------------------------------
Feature #5606: String#each_match(regexp)
https://bugs.ruby-lang.org/issues/5606#change-25254

Author: tomoakin (Tomoaki Nishiyama)
Status: Feedback
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://bugs.ruby-lang.org/

In This Thread