2015-02-11 3 views
1

Мне нужно сгенерировать регулярное выражение, которое будет проверять, что существует строка, содержащая числа, разделенные “,”, а затем после этого есть строка, разделенная “|” из этих чисел. Пример: 12,14,15|It is an errorПроверка с использованием Regex в Java

В указанном выше примере является строка содержит число которым до проведения '|', которые могут иметь запятые, но не текст, а текст после '|' не может содержать запятую. На данный момент я использую [0-9]+(,[0-9]+)* для цифр и ^[^,]*$ для текста и использую ,|\\| для удаления , и | для дальнейшей обработки. Но мне нужно все это в одном Regex. Может ли кто-нибудь мне помочь.

ответ

0
^[0-9]+(,[0-9]+)*\|[a-zA-Z0-9]+$ 

Это должно быть сделано.

или

^[0-9]+(,[0-9]+)*\|[^,]+$ 
+0

Когда я даю это, String регулярное_выражение = «^ [0-9] + (, [0-9] +) * \ | [^,] + $ ";, Он показывает недопустимую escape-последовательность (допустимые - \ b \ t \ n \ f \ r \" \ '\) шаблон синтаксической ошибки. я могу это исправить? – user1311991

+0

@ user1311991 '^ [0-9] + (, [0-9] +) * \\ | [^,] + $' – vks

+0

Это сработало. Большое спасибо. – user1311991

0

импорт java.util.regex.Matcher; импорт java.util.regex.Pattern;

тест класс { государственной статической силы основных (String арг []) {

// String to be scanned to find the pattern. 
    String line = "12,14,15|It is an error"; 
    String pattern = "^[0-9]+([^|]+)"; 

    // Create a Pattern object 
    Pattern r = Pattern.compile(pattern); 

    // Now create matcher object. 
    Matcher m = r.matcher(line); 
    while (m.find()) { 
    System.out.println(m.group(0)); 
} 

}}

+0

Но когда проверяется, «12,14,15 | Это ошибка» является допустимой строкой, она возвращает false. Разве это не правда? Это то, что я хочу проверить. – user1311991

Смежные вопросы