Регулярное выражение, которое соответствует определенным символам и одному символу подстановки - PullRequest
0 голосов
/ 17 декабря 2018

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

Символами могут быть любые буквы az , как и с подстановочными знаками.

Пока что у меня есть: ^[poe]+$

Мое намерение с приведенным выше регулярным выражением состоит в том, чтобы соответствовать любому слову любой длины, содержащему ТОЛЬКО буквы poe И, необязательно одно другое письмо.Некоторые «слова», которые могут совпадать:

  • PPEEOX
  • PO
  • POX
  • EEP

Но несовпадение:

  • PPPXY
  • XYP

Ответы [ 4 ]

0 голосов
/ 17 декабря 2018

Если один из символов [POE] должен присутствовать в строке, [POE] может встречаться 0 или более раз, а подстановочный знак 0 или 1 раз, вы можете использовать положительный прогноз, а для подстановочного знака использовать класс символов [A-DF-NQ-Z]? с диапазоном, который не соответствует P, O или E:

^(?=.*[POE])[POE]*[A-DF-NQ-Z]?[POE]*$

Regex demo

Это будет соответствовать

  • ^ Начало строки
  • (?=.*[POE])
  • [POE]* Совпадение 0+ раз P, O или E
  • [A-DF-NQ-Z]? Соответствует необязательному не [POE]
  • [POE]* Соответствует 0+ раз P, O или E
  • $ Подтвердитеконец строки
0 голосов
/ 17 декабря 2018

Используйте ?= lookaheads для поиска конкретных букв и \b границы, чтобы ограничить до 3-4 букв:

/\b(?=\w*p)(?=\w*o)(?=\w*e)[a-zA-Z]{3,4}\b/
0 голосов
/ 17 декабря 2018

[poe]{3}[a-zA-Z]{1}

Это означает, что «есть [один 'p' или 'o' или 'e'] {появился 3 раза}, а затем [любой алфавит] {появился 1 раз}",пропуск начальной и конечной отметок.

0 голосов
/ 17 декабря 2018

Если вы хотите утверждать, что четыре символа появляются в любом порядке, то здесь можно выбрать один из вариантов предпросмотра:

^(?=.*p)(?=.*o)(?=.*e)(?=.*q)[A-Za-z]{4,}$

Это предполагает, что вы хотите сопоставить каждый из poe, а такжечетвертая буква q.

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