Регулярное выражение с оператором OR

189
24 мая 2018, 13:20

Мне нужно найти с помощью рег. выражения строки, которые удовлетворяют сразу все следующие условия:

  1. Обязательно начинается с символа '#'
  2. Далее может следовать последовательность [0-9](но не обязательно)
  3. Далее обязательно следует символ '%' или '*' или последотовательность [A-Z]
  4. Строка обязательно заканчивается на '#'

Примеры строк, которые должны совпадать:

#1212%#
#1212*#
#*#
#%#
#AVEJE#
#242435AVEJE#

Я составил рег. выражение и оно выполняет все условия, кроме одного: оно почему-то совпадает со строкой ##

Само рег. выражение: ^#[0-9]*([A-Z]*|%|\\*)#$

В чем состоит ошибка? Буду рад любой помощи.

Answer 1

У вас [A-Z]* подразумевает, что может быть 0 и более букв. ## как раз под этот случай подпадает.

Надо не *, а + (что подразумевает 1 и более) использовать: ^#[0-9]*([A-Z]+|%|\\*)#$.

READ ALSO
Сортировка слов по алфавиту не понимает украинские буквы

Сортировка слов по алфавиту не понимает украинские буквы

Есть список слов в словаре, его надо отсортировать, и как бы все работает, но буквы є, і, ґ выходят в самом концеМожно ли это как-то исправить...

224
Получение sms в фоновом режиме (когда приложение закрыто) на смартфоне с версией android 7.1 SDK 8.1 oreo (API 26)

Получение sms в фоновом режиме (когда приложение закрыто) на смартфоне с версией android 7.1 SDK 8.1 oreo (API 26)

Подскажите пожалуйста, написал приложение которое может получать sms в фоновом режимеНа смартфоне с android 5

213
Как сделать такой BottomSheet с отступами и закругленными углами?

Как сделать такой BottomSheet с отступами и закругленными углами?

Не получается сделать чтобы были отступы

207
Почему строка из файла properties не равна String ?

Почему строка из файла properties не равна String ?

Сравниваю строки String и значение из файла properties то же String пользуюсь данной конструкцией

192