2009-08-24 9 views
2

私はC++ tr1 :: regexをECMAの正規表現文法で使っています。私がしようとしているのは、ヘッダーを解析し、ヘッダー内の各項目に関連付けられた値を返します。キャプチャを正規表現で任意の回数繰り返す方法はありますか?

ヘッダ:

-Testing some text 
-Numbers 1 2 5 
-MoreStuff some more text 
-Numbers 1 10 

私は何をしたいのが「-Numbers」行のすべてを見つけ、単一の正規表現で独自の結果にそれぞれ番号を入れています。ご覧のように、「Number」行は、その行に任意の数の値を持つことができます。現在のところ、私は単に「ナンバー([\ s0-9] +)」を検索し、その結果をトークン化しています。私はただ一つの正規表現で結果を見つけてトークン化する方法があれば疑問に思っていました。

答えて

2

いいえ、ありません。

0

私はまったく同じ質問をしようとしていましたが、私は解決策を見つけました。

あなたがキャプチャしたい任意の数の単語を持っているとします。

"4灯がある"

あなたは解決策があると思うかもしれない

"キャプテンピカードは爆弾です":

/((\w+)\s?)+/ 

しかし、これはのみ一致します入力文字列全体と最後に取得したグループ。

「g」スイッチを使用して行うことができます。

ので、Perlでの例は:

use strict; 
use warnings; 

my $str1 = "there are four lights"; 
my $str2 = "captain picard is the bomb"; 

foreach ($str1, $str2) { 
    my @a = ($_ =~ /(\w+)\s?/g); 
    print "captured groups are: " . join("|", @a) . "\n"; 
} 

出力は次のとおりです。だから、

captured groups are: there|are|four|lights 
captured groups are: captain|picard|is|the|bomb 

選択した言語は、 "G" と同等のものをサポートしている場合、解決策がある(と私は推測しますほとんどのこと...)。

これは私と同じ位置にいた誰かを助けることを願っています!

関連する問題