2011年5月 1日

[ruby-list:48033] Re: 文字列を正規表現にマッチする部分と他の部分に分割

信岡さん

5.5 です。

>> 大きなテキストで,かつマッチ箇所が多数あると,大量の文字列ゴミが出ま
>> すよね。
>
> そうですね、ごみは出てしまいますね。 ごみを出さないようにするには、

> $' を str に代入するのではなく、マッチした位置を index として記録しておいて、
> String#match メソッドの第 2 引数に渡すような処理にするとか、すれば
> いいのでしょうか。

第二引数? と思ってるりまを見ました。
Ruby 1.9 で第二引数が導入されたんですね。

> 実を言うと私も 5.5 さんが提案されたようなメソッドが欲しいなーと思ったことがあって、
> その時は自分で適当にそういうメソッドを作ったのですが、確かに実行速度などを
> 考えると C での実装で提供して貰えるとありがたいですよね。

速度面のほかに,私のようなヘタレには毎回「えーっとどう書くんだっ
け」という煩わしさもありまして。

> ただ、String クラスや Regexp クラスに新しく追加すべきメソッドかというとそうでもないなぁ、
> とも感じていて。。 追加されるとすれば StringScanner あたりが適当ですかね。

String に入れるにはあまり“基本的”ではないのかもしれませんね。
私としては String#scan の姉貴って感じなのですが。

> ちなみに私がそういうメソッドを欲しいと思ったのは、XML のタグ部分 ('<' と'>' で囲まれた部分)
> とそれ以外の部分を分けるという処理を書いたときです。 以下のように書けると便利ですよね。
>
> xml_str.each_segment /<[^>]*>/ do |str, matched|
> if matched
> proc_for_tag( str )
> else
> proc_for_text( str )
> end
> end

私も,過去に必要と思ったケースの一つはこの手のものでした。

--
5.5@xxxxx


投稿者 xml-rpc : 2011年5月 1日 21:18
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/103547
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。