2

Javaの正規表現を使用して、行を読み取り、値を解析しようとしています。値を含む行は次のようになります。

...... TESTYY912345 .......
...... TESTXX967890 ........

基本的に、4文字、次に任意の2つのASCII値、その後に数字の9、次に(任意の)数字が含まれます。そして、値912345と967890を取得したいと思います。

これは私がこれまで正規表現で持っているものです、

...テスト[\x00-\ xff] {2} [9]{1}..。

ただし、これは9をスキップし、12345と67890を解析します(9も含めたい)。

ご協力いただきありがとうございます。

4

2 に答える 2

2

あなたはかなり近いです。(9\\d*)照合後、グループ全体をキャプチャしTEST\\p{ASCII}{2}ます。9このようにして、および次の数字をキャプチャします。

String s  = "...... TESTYY912345 ......";
Pattern p = Pattern.compile("TEST\\p{ASCII}{2}(9\\d+)");
Matcher m = p.matcher(s);
if (m.find()) {
  System.out.println(m.group(1)); // 912345
}
于 2012-09-12T22:12:22.790 に答える
2

実用的な表現については、私のコメントを参照してください"TEST.{2}(9\\d*)"

final Pattern pattern = Pattern.compile("TEST.{2}(9\\d*)");
for (final String str : Arrays.asList("...... TESTYY912345 .......",
         "...... TESTXX967890 ........")) {
  final Matcher matcher = pattern.matcher(str);
  if (matcher.find()) {
    final int value = Integer.valueOf(matcher.group(1));
    System.out.println(value);
  }
}

ideoneの結果を参照してください:

912345

967890

これは、あなたの例では、任意の2文字(行ターミネーターを除く)と一致し、。の後の任意の数字を取ります。XXYY9

于 2012-09-12T22:14:54.827 に答える