Regex, чтобы найти несколько различных форматов даты - PullRequest
0 голосов
/ 07 мая 2019

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

  • 01 декабрь 2018
  • 1 декабря 2018
  • декабрь 2018
  • 2018

Я изо всех сил пытаюсь найти правильное регулярное выражение. Заранее спасибо!

date= re.search('\d{2}\W\w+\W\d{4}', elems[i].text)

if date is not None:
     elem[date'] = date.group(0)

1 Ответ

0 голосов
/ 07 мая 2019

Вы можете изменить это регулярное выражение, в котором есть дополнительные группы, соответствующие вашим дополнительным данным,

(?:(?:\d{1,2}\W)?\w+\W)?\d{4}

Чтобы поддерживать дату как одну или две цифры, вам нужно изменить квантификаторы с {2} на 1,2, и, как и в одном из ваших примеров, часть даты отсутствует, поэтому вам нужно сделать (?:\d{1,2}\W) часть как опцию, поставив ? после группы, и поскольку в одном из ваших примеров нет части даты и месяца, следовательно, вам нужно сделать опцию (?:(?:\d{1,2}\W)?\w+\W) также необязательной, поставив ? после группы, которая будет тогда просто соответствовать вашей части года с \d{4}

В отдельной заметке я предлагаю вам сделать ваше регулярное выражение более конкретным, если вы собираетесь использовать его для сопоставления / извлечения текста из общего текста. Но если вы собираетесь использовать его для сопоставления текста, который не содержит общих строк, тогда все должно быть в порядке. Делайте согласно вашим потребностям.

Regex Demo

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