Подстановка регулярных выражений из выбранной группы регулярных выражений - PullRequest
0 голосов
/ 12 октября 2018

У меня есть следующая строка

Я работаю только с 12 по 14 сентября в этом месте.Я вернусь с 10 по 15 мая следующего года.

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

(\ w + \ s?) (\ D {1,2} \ s?) - (\ d {1,2})

Это регулярное выражение возвращает 2 полных совпадения

Матч 1

  • Полный матч : 12 сентября -14
  • Группа 1 : сентябрь
  • Группа 2 : 12
  • Группа 3 : 14

Матч 2

  • Полный матч : 10-15 мая
  • группа 1 : май
  • группа 2 : 10
  • группа 3: 15

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

Я планирую использовать его в Python.

Желаемый результат должен выглядеть примерно так.

Я работаю только с 12 сентября по 14 сентября в этом месте.Я вернусь с 10 по 15 мая следующего года.

1 Ответ

0 голосов
/ 12 октября 2018

Можно сопоставить

(\w+) ?(\d{1,2} ?-)(\d{1,2})

и заменить на первую группу, вторую группу, снова на первую группу (для вставки месяца), а затем на третью группу:

\1 \2\1 \3

https://regex101.com/r/Zcqsr2/1

import re
str = 'I only work between September 12 -14 at this place. I will be back between May 10-15 next year.'
print(re.sub(r'(\w+) ?(\d{1,2} ?-)(\d{1,2})', r'\1 \2\1 \3', str))
...