0

私が達成したいことは、実際には非常に単純です。次のような行があります。

V123,V20  
10,9999  
100,V220  

等...

基本的に、先頭の文字/ゼロを含む数字のペアが多数あります。RegExを使用してそれらを解析できるようにしたいのですが、Javaでこれまでに見つけたのは次のとおりです。

Pattern p = Pattern.compile(".*([1-9](?:\\d{0,2})).*",Pattern.MULTILINE);
Matcher m = p.matcher("V999,V50");
System.out.println(m.matches()); - return true
System.out.println(m.groupCount()); --> this one returns 0

どんな助けでも感謝します、ありがとう。

4

2 に答える 2

1
public static void main(String[] args) throws IOException {
    String[] a = new String[] {"V123,V20", "10,9999", "100,V220"};

    for (String s: a) {
        Pattern p = Pattern.compile("[\\D0]*(\\d*)[\\D0]*(\\d*)",Pattern.MULTILINE);
        Matcher m = p.matcher(s);
        System.out.println(m.matches());
        System.out.println(m.group(1) + ", " + m.group(2));
    }
}

それが役に立てば幸い!

編集

PS: 末尾に文字がある場合は、最後に \\D を追加できます:

"[\\D0]*(\\d*)[\\D0]*(\\d*)[\\D]*
于 2013-05-13T19:07:31.963 に答える
0

私はこのようにします

    Matcher m = Pattern.compile("\\d+").matcher(str);
    while(m.find()) {
        int i = Integer.parseInt(m.group());
    }
于 2013-05-13T21:00:08.210 に答える