Регулярное выражение Java - как проверить, не существует ли запятая между значениями? - PullRequest
1 голос
/ 20 марта 2020

Для данной строки я хотел бы проверить, существует ли между любым числом и любым литеральным символом разделитель запятых и только в этом порядке.

Пример: Mo-Do 10:00-20:00 Fr-Sa 10:00-21:00

должен дать мне значение true / false, если между 20:00Fr-Sa существует ,. Перед синтаксическим анализом я всегда удаляю пробелы.

Ответы [ 2 ]

1 голос
/ 20 марта 2020

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

String input = "Mo-Do 10:00-20:00 Fr-Sa 10:00-21:00";

String inputWithoutWhiteSpace = input.replaceAll("\\s", "");

String pattern = "(.*)([0-9][0-9]:[0-9][0-9],[A-Z][a-z]-[A-Z][a-z])(.*)";

boolean patternExist = inputWithoutWhiteSpace.matches(pattern);
1 голос
/ 20 марта 2020
String withComma = "Mo-Do 10:00-20:00, Fr-Sa 10:00-21:00".replace(" ", "");
String withoutComma = "Mo-Do 10:00-20:00 Fr-Sa 10:00-21:00".replace(" ", "");

Pattern pattern = Pattern.compile(".*\\d,[A-Z].*");

System.out.println(pattern.matcher(withComma).matches()); //true
System.out.println(pattern.matcher(withoutComma).matches()); //false

Возвращает true, если входная строка содержит любое количество символов, за которыми следует (в этом порядке)

  1. a di git \\d
  2. запятая ,
  3. заглавная буква [A-Z]
  4. любое количество символов .*
...