1

私が使用ruby 2.0しているのは、その正規表現エンジンです。

次の文字列を指定します。

str = "one: two, three: four"

リストの長さは可変です (0 から無限)。そのエントリをキャプチャするにはどうすればよいですか? したがって、この例では、正規表現が一致する必要があります。

[1]:"one: two", [2]:"three: four"

これは私がこれまでに思いついたものです:

/((\w+:\s\w+),?)*/

しかし、それは私に与えるだけです:

 => #<MatchData "one: two," 1:"one: two," 2:"one: two"> 

私は何を間違っていますか?

4

4 に答える 4

0

* を使用してキャプチャ括弧を繰り返すことはできません。最後の一致のみをキャプチャします。

すでに指摘したように、スキャン方法が有効です。

str.scan(/(\w+:\s\w+),?/)
于 2013-10-08T21:30:04.887 に答える
0

それよりもさらに簡単です: これはあなたが望むことをします - つまり、グループ 1 と 2 の 2 つの名前:値のペアをキャプチャします:

/(\w+:\s\w+)/

あなたの例で動作するこの正規表現の rubular のライブ デモを参照してください。

于 2013-10-09T01:58:13.093 に答える