0

mattcher.findメソッドを使用して文字列内の出現回数を見つけるマッチャー付きのJavaコードがあります。

以下は私のコードです

String text = "INCLUDES(ABC) EXCLUDES(ABC) EXCLUDES(ABC) INCLUDES(EFG) INCLUDES(IJK)";

String patternString = "INCLUDES(.)";

Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(text);

int count = 0;
while(matcher.find()) {
    count++;
    System.out.println("found: " + count + " : "
            + matcher.start() + " - " + matcher.end());
    System.out.println(" - " +text.substring(matcher.start(), matcher.end()));
}

出力を次のように返します

found: 1 : 0 - 9
 - INCLUDES(
found: 2 : 42 - 51
 - INCLUDES(
found: 3 : 56 - 65
 - INCLUDES(

代わりに、正規表現でオカレンスの数をINCLUDES(*)として検索して返すようにします。

どんな解決策も適用されます。期待される出力はループ印刷値である必要があります

INCLUDES(ABC)
INCLUDES(EFG)
INCLUDES(IJK)
4

1 に答える 1

1

正規表現が正しくありません。角かっこ内の1つの文字をキャプチャしているだけなので、正規表現は失敗します。

これを使ってみてください:-

"\\w+\\(.*?\\)"

そして、、group(0)または単にgroup():-を取得します

String text = "INCLUDES(ABC) EXCLUDES(ABC) EXCLUDES(ABC) INCLUDES(ABC) INCLUDES(ABC)";
Matcher matcher = Pattern.compile("\\w+\\(.*?\\)").matcher(text);

while (matcher.find()) {
    System.out.println(matcher.group());
}
于 2013-02-04T20:16:45.833 に答える