2015-01-27 3 views
1

мне нужно проверить следующую строку, чтобы соответствовать только если номер является больше чем .Regex шаблона для проверки численного значения

[D: \ сослагательного наклонения \ Pearl_Sync_Test \ Client \ Pub \ Checkout \ УРК \ Source \ \ УРК клиент \ Ifs.SM.Common.MSOffice \ Ifs.SM.Common.MSOffice.csproj]

47 Warning(s) 
5 Error(s) 

Мое решение до сих пор, чтобы соответствовать строке выше

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

в результате в извлечении этой строки, 5 Ошибка (ы)

Итак, можно ли проверить, является ли число больше 0?

Благодаря

+0

Нет, это не та часть, которую я хотел. Я обновил содержимое – wishman

+1

Немного неясно: вы хотите узнать второе регулярное выражение в дополнение к вашему, чтобы узнать, больше ли число, которое вы извлекли, больше нуля? Или вы хотите, чтобы regexp * улучшал * ваш, и не будет соответствовать ему вообще, если он равен нулю? И вы также хотите соответствовать «Предупреждениям»? – RealSkeptic

+0

Я просто хочу сопоставить 5 ошибок, и да, мне нужно улучшить текущий шаблон. Не второй шаблон регулярного выражения. Спасибо – wishman

ответ

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 
+1

'+' действительно не нужно – m0skit0

+2

Не то, чтобы это действительно имело значение здесь, но '[1-9] \\ d *' does работа тоже, и она менее катастрофична, чем «[1-9] + \\ d *'. –

+0

@Rawing true, спасибо, что заметили. Хотя я не понимаю, почему «катастрофический»! – Mena

4

Регулярные выражения не очень подходят для этой проблемы, но если вы не получите отрицательные ошибки, вы можете просто проверить, если это не 0.

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

Demo

+0

Спасибо. Это тоже сработало – wishman

+1

Ответ, который вы приняли, был опубликован после моего, но в любом случае рад помочь :) – m0skit0

-1

в данном случае не требуется, чтобы лишить ошибки откусили и проверить значение после того, как вы бросили первую часть на межды? Кажется, вы пытаетесь выполнить проверку строки, пока вы действительно хотите знать, что такое определенное число.

0

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

спасибо, что рыбу.

+0

Вопросительный знак делает __not__ сделать вторую цифру опциональной. Это делает «+» квантор неживым. Это не будет соответствовать однозначным номерам. –