Regex - Как сделать так, чтобы между двумя символами или от начала до определенного символа был только 1 экземпляр символа - PullRequest
0 голосов
/ 28 февраля 2019

Я хочу убедиться, что перед скобками встречается только 1 экземпляр comoa.Скобки обязательно.Мне нужно убедиться, что все строки соответствуют шаблону.Regex matcher не должен содержать подстроку.

Примеры;

 Mert,sert , abc() = not valid
 Mert, asd( = valid
 Mert , asd,( = not valid
 Mert , asd = not valid

Я пробовал этот вариант, а также вы можете объяснить, почему он не работает?Спасибо

.+,[^,]+\(.+

1 Ответ

0 голосов
/ 28 февраля 2019

Вы можете использовать

^[^,(]*,[^,(]*\(.*

См. Демонстрационную версию regex

В Java используйте

Boolean result = s.matches("[^,(]*,[^,(]*\\(.*");

Или, если возможноразрывы строк, s.matches("(?s)[^,(]*,[^,(]*\\(.*").

Подробности

  • ^ - начало строки (не обязательно в String#matches)
  • [^,(]* - 0 или более символов, отличных от запятой и открытых скобок
  • , - запятая
  • [^,(]* - 0 или более символов, отличных от запятой и открытых скобок
  • \( - открытая скобка
  • .* - остаток строки / строки (с (?s)).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...