0

12と15を抽出しようとしています。

AB CD 12 ABC/15 DEF
.*\bAB CD\b\s?(\d+)\s?\bABC\b[/](\d+)\s?\bDEF\b

正確な単語を一致させる方法がわからないため、機能していません。境界を使用して正確な単語を一致させようとしていますが、問題が発生しているようです。

私は試した

.*\\bAB CD\\b\\s?(\\d+)\\s?\\bABC\\b[/](\\d+)\\s?\\bDEF\\b
.*\\bAB CD\\b\\s*(\\d+)\\s*\\bABC\\b[/](\\d+)\\s*\\bDEF\\b
.*\\bAB CD\\b[\\s]?(\\d+)[\\s]?\\bABC\\b[/](\\d+)[\\s]?\\bDEF\\b
.*\\bAB CD\\b[\\s]*(\\d+)[\\s]*\\bABC\\b[/](\\d+)[\\s]*\\bDEF\\b

ありがとう。

4

4 に答える 4

0
.*\bAB CD\b\s?(\d+)\s?\bABC\b[/](\d+)\s?\bDEF\b
                           ^^^        ^^ you dont need these \b
于 2013-08-01T04:40:42.143 に答える
0

これを使用できます:

"AB\\s*CD\\s*(\\d+)\\s*ABC/(\\d+)\\s*DEF"
于 2013-08-01T03:57:21.043 に答える
0

必要なのは、文字列から数字を抽出するだけです。次のコードを試してください。

Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher("AB CD 12 ABC/15 DEF");
while (m.find()) {
    System.out.println(m.group());
}

数字を除いて文字列を正確に一致させたい場合:

Pattern p = Pattern.compile("AB\\s+CD\\s+(\\d+)\\s+ABC/(\\d+)\\s*DEF");
Matcher m = p.matcher("AB CD 12 ABC/15 DEF");
if (m.find()) {
    System.out.println(m.group(1));
    System.out.println(m.group(2));
}
于 2013-08-01T03:58:48.507 に答える