我需要验证以下字符串,以便仅当数字 更高而不是 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?
由于
答案 0 :(得分:4)
答案 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后检查值吗? 您似乎正在尝试进行字符串验证,而实际上您想知道某个数字是什么。