0

次の文字列の2つの数値をどのように解析しますか?

String fName = "Run_1_vs_2_pw_optimal_mapping.txt";

私はこのように試しましたが、機能しません:

    Pattern filePatt = Pattern.compile("Run_(\\d+)_vs_(\\d+)_", Pattern.CASE_INSENSITIVE);

    Matcher scanner = this.filePatt.matcher(fName);
    while (scanner.find()) {
            int groupSize = scanner.groupCount();
            if (groupSize == 2) {
                firstRun = Integer.parseInt(scanner.group(0));
                secondRun = Integer.parseInt(scanner.group(1));
            }
            break;
     }

ただし、scanner.group(0)はを返すため、これは機能しませんRun_1_vs_2。しかし、なぜ?

4

2 に答える 2

2

ドキュメントを参照してください。

キャプチャグループは、1から始めて左から右にインデックスが付けられます。グループゼロはパターン全体を表すため、式m.group(0)はm.group()と同等です。

とを使用group(1)group(2)ます。

于 2012-12-06T17:34:21.643 に答える
2

グループ番号0は完全一致に対応しているためです。キャプチャはからカウントされ1ます。必要なのは、キャプチャ1(最初の括弧のセット)と2(2番目の括弧のセット)です。

于 2012-12-06T17:34:51.363 に答える