0

次のようなさまざまな文字列があります。

  • 1
  • 1,2
  • 1 2
  • 1と2
  • 1、2、3
  • 1、93

つまり: - 単一の数字 (場合によっては複数の数字) - 「and」、コンマ、またはスペースで区切られたシーケンス

文字列の数値ビットだけを引き出す Reg Ex を書きたいと思います。私はこのようなものがうまくいくと思っていました:

Pattern.compile("^(?:(\\d+)[^\\d]+)*$");

数字のシーケンスに一致してキャプチャし、数字以外の複数の文字をスキップして繰り返す必要があるという考えです

4

2 に答える 2

3

ここで数字の一致を行っているだけではありませんか?:

    String str = "1, 2 and 3, 93";

    Matcher m = Pattern.compile("\\d+").matcher(str);
    while (m.find()) {
        System.out.println(m.group(0));
    }
于 2012-08-21T10:41:53.180 に答える
0

"\d+" で一致しないのはなぜですか?

public class SO {

    public static void main(String[] args) {
        String s = "13, 23 and 33";
        Pattern p = Pattern.compile("(\\d+)");
        Matcher m =  p.matcher(s);
        List<Integer> result = new ArrayList<Integer>();
        while (m.find()) {
            result.add(new Integer(m.group()));
        }
        System.out.println(result);
    }
}

プリントアウト

[13, 23, 33]
于 2012-08-21T10:45:55.843 に答える