Строковое манипулирование с помощью обычного выражения или выражений

Я пытаюсь разобрать некоторые строки из фразы. Это фраза: «1-й этаж 2-й этаж 3-й этаж 4-й этаж». Фраза конца должна быть: «1-й этаж», «2-й этаж», «3-й этаж», «4-й этаж»,

У меня возникли проблемы с получением «1-го», «2-го», «третьего», «четвертого» частей регулярного выражения. Я знаю, что могу сделать менее интуитивную версию, используя 4 разных или заявления, но мне интересно, могу ли я сделать это с одним.

'\ dst \ s \ w + | \ dnd \ s \ w + | \ drd \ s \ w + | \ dth \ s \ w +' – это длинный путь, который я пытаюсь сократить

Есть ли способ объединить st, nd, rd и th в один оператор без повторения форматирования? Благодарю.

3 Solutions collect form web for “Строковое манипулирование с помощью обычного выражения или выражений”

Демо-версия

Вот регулярное выражение:

(\d+(st|nd|rd|th)) \w+\b 

Другая возможность:

 import re s = '1st Floor 2nd Floor 3rd Floor 4th Floor' s2 = re.findall(r'\w+ Floor', s) 

Да, вы можете объединить st, nd, rd и th в один оператор, но похоже, что вы пытаетесь получить список из этого регулярного выражения. Почему бы не попробовать re.split вот так?

 >>> import re >>> t = '1st Floor 2nd Floor 3rd Floor 4th Floor' >>> re.split(r'(?<=Floor)\s+', t) ['1st Floor', '2nd Floor', '3rd Floor', '4th Floor'] 
  • Формат Python timedelta для строки
  • Получить последний столбец после операции .str.split () в столбце в pandas DataFrame
  • Ошибка декодирования Python ASCII и Unicode
  • Как удалить квадратную скобку из рамки данных pandas
  • Извлечение URL-ссылки с использованием регулярного выражения re-string matching - Python
  • Python - write () и writelines () и конкатенированные строки
  • Преобразование байтовой строки в строку юникода
  • Как XOR две шестнадцатеричные строки, чтобы каждый байт был XORed отдельно?
  • Python - лучший язык программирования в мире.