3

入力に不明な回数表示される可能性のあるパターンを認識するJavaプログラムで使用する正規表現を作成しようとしています。私のばかげた小さな例は次のとおりです。

String patString = "(?:.*(h.t).*)*";

次に、matcher.group(i)をループして、「小屋は暑い」のような行から一致にアクセスしようとします。キャプチャグループは1つしかないため、最後の一致(この場合は「ホット」)のみが記憶されます。キャプチャグループが再利用されると、matcher.group(1)の内容が上書きされると思います。しかし、私が欲しいのは、 「小屋」と「ホット」の両方を含むある種の配列です。

これを行うためのより良い方法はありますか?FWIW、私が本当にやろうとしているのは、合図の単語の後にあるすべての(おそらくマルチワードの)適切な名詞を拾うことです。その間に他の単語や句読点があるかもしれません。したがって、「見た」が合図であり、「ボブとジョンスミス、および彼の妻マーガレットを見た」という場合は、{「ボブ」、「ジョンスミス」、「マーガレット」}が必要です。

4

1 に答える 1

6

(同様の質問:グループの数が可変の正規表現?

これは不可能です。あなたの最良の選択肢は、を使用しh.t、を使用することです

while (matcher.find()) {
    ...
    ... matcher.group(1); ...
    ...
}

この機能.NETに存在しますが、前述のように、Javaには対応する機能がありません。

于 2011-03-26T19:50:02.123 に答える