Regex для поиска и перечисления любых трех символов, заключенных в тире и последнего совпадения в строке - PullRequest
0 голосов
/ 04 марта 2020

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

(?:-)([A-Z]{3})+?(?:-)

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

ABC-FOUR-ONE-FIVE-TWO

Может ли быть регулярное выражение, в котором перечислены только ONE и TWO (соответствует всем, кроме первого

Ответы [ 2 ]

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

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

re.findall(r'-([A-Z]{3})(?![^-])', text)

или его эквивалент

re.findall(r'-([A-Z]{3})(?=-|$)', text)

См. Демо regex и Python demo

Детали шаблона

  • - - дефис
  • ([A-Z]{3}) - Группа захвата 1: три заглавные буквы
  • (?=-|$) / (?![^-]) - соответствует (но не потребляет) значение - или конец строки.
0 голосов
/ 04 марта 2020

Попробуйте что-то вроде этого (-[A-Za-z]{3}(-|$)) (проверено на https://regex101.com/)

Это регулярное выражение говорит: соответствует да sh, затем 3 [A-Za-z] символы и, наконец, символ «-» или «конец строки»

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