我想编译与非负整数匹配的Pattern。它应查找一个或多个连续数字的序列,该序列前没有另一个数字或负号。我已经能够编译以下内容:

Pattern digit = Pattern.compile("\\d");  //looks for single digits


但是假设我声明以下内容:

String a = "90 210";
String b = "-90 210";
String c = "z90p210";
String d = "pz-90210";


digit将在所有这四个中匹配"9""0""2""1""0"。我对Pattern"90"中的"210"a"210"中的b"90"中的"210"c匹配的d感兴趣,而在。

有没有办法忽略以负号或其他数字开头的数字序列?

最佳答案

您可以使用否定的后向断言:(?<!...)(不带前缀)

Pattern digit = Pattern.compile("(?<![\\d-])\\d+");

09-11 19:28