0

我有许多不同的字符串,看起来像:

  • 1
  • 1,2
  • 1 2
  • 1 和 2
  • 1、2 和 3
  • 1, 93

所以这就是: - 单个数字(可能是多个数字) - 由“和”、逗号或空格分隔的序列

我想写一个 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 回答