2011年5月 1日

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

遠藤です。

2011年4月28日22:58 5.5 <5.5@xxxxx>:
> 文字列 S の中で,正規表現 R にマッチする部分とそれ以外の
> 部分をそれぞれ取得したいときに,どうもうまい方法が見つか
> りません。


\G の出番ではないでしょうか。

result=""
"ab12cd".scan(/\G(.*?)(?:(\d+)|\z)/) do |nomatch, match|
result << nomatch
result << "<#{ match }>" if match
end
p result


正規表現がごちゃごちゃしてしまうので、each_segment みたいな
機能に反対はしないです (メソッド名はともかく) 。

ちなみにユースケースとしては、簡単な parsing で結構頻出だと
思います。wiki 文法とか、MML とか。StringScanner を使うほど
大げさじゃないとき。

--
Yusuke Endoh <mame@xxxxx>


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




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