[#36686] 1.1 < 61.1 - 60.0 — Shin-ichiro HARA <sinara@...>

原です。

19 messages 2002/12/06

[#36770] www.ruby-lang.orgリニューアル準備のお知らせ — TADA Tadashi <sho@...>

ruby-lang.orgのwebmasterチームでは、タイムリーな情報提供と使いやすい

11 messages 2002/12/16

[ruby-list:36726] Re: scan /()*/

From: TOYOFUKU Chikanobu <toyofuku@...>
Date: 2002-12-10 05:30:37 UTC
List: ruby-list #36726
   豊福です。

るびきちさん
 >>    下記のスクリプトで [["a","b","c"],["d","e","f","g"]] と
 >> いう結果を期待したのですが [["b","c"],["f","g"]] でした。
 >> こういうときはどう書けばよいでしょうか。(できれば scan一発で)
 >> 
 >> s = "hoge (a,b,c) fuga (d,e,f,g)"
 >> p s.scan /\((?:(\w+),)*(\w+)\)/
 > この場合 /\((?:(\w+),)*/ が "b" と "f" にマッチします。
 > そもそもscanの返り値の内部配列の要素数ってグループの個数なのでは?

   そう言われれば、最初に期待してたのは [["a","b","c"],["d","e","f","g"]]
ではなくて [[["a","b"],"c"],[["d","e","f"],"g"]] でした。
なぜそう思ったんだろう。

 > だから、こうかな・・・・。
 > irbsh[10@12:56](main):029:0> s.scan(/\((.+?)\)/).collect{|x| x.first.split(/,/)}
 > [["a", "b", "c"], ["d", "e", "f", "g"]]

   うーーん、そうですか。正規表現も一発で済ましたかったん
ですが…
---
                                          豊福
                                          toyofuku@juice.or.jp 


In This Thread