正则表达式模式验证数值

时间:2015-01-27 15:29:22

标签: java regex

我需要验证以下字符串,以便仅当数字 更高而不是 0 时才会匹配。

  

[d:\ IFS \ Pearl_Sync_Test \客户\酒吧\结帐\ CRM \源\ CRM \客户\ Ifs.SM.Common.MSOffice \ Ifs.SM.Common.MSOffice.csproj]

47 Warning(s)
5 Error(s)

到目前为止我的解决方案是匹配上面的字符串

((\d)\sError\(s\))

导致提取此字符串 5错误

那么,是否可以检查数字是否大于0?

由于

4 个答案:

答案 0 :(得分:4)

正则表达式不适合这个问题,但假设你不会得到负面错误,你可以检查它是否不是0。

"[1-9]\\d*\\sError\\(s\\)"

Demo

答案 1 :(得分:3)

您可以使用以下正则表达式惯用法来表示以数字> 1开头的错误编号:

String[] errors = {"5 Error(s)", "50 Error(s)", "0 Error(s)"};
//                           | starts with digit > 0
//                           |    | optionally ends with 0 or more digits
//                           |    |    | rest of the pattern
Pattern p = Pattern.compile("[1-9]\\d* Error\\(s\\)");
for (String s: errors) {
    System.out.println(s.matches(p.pattern()));
}

<强>输出

true
true
false

答案 2 :(得分:0)

[1-9] [0-9] * \ sError(S)?

感谢Rawling。

答案 3 :(得分:-1)

在这种情况下你不想将错误去掉并在将第一部分转换为int后检查值吗? 您似乎正在尝试进行字符串验证,而实际上您想知道某个数字是什么。