Regex для извлечения всех сложных форматов дат из строки - PullRequest
0 голосов
/ 12 февраля 2020

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

"04-20-2009; 04/20/09; 4/20/09; 4/3/09; Mar 20, 2009; March 20, 2009; Mar. 20, 2009; Mar 20 2009; 20 Mar 2009; 20 March 2009; 2 Mar. 2009; 20 March, 2009; Mar 20th, 2009; Mar 21st, 2009; Mar 22nd, 2009; Feb 2009; Sep 2009; Oct 2010; 6/2008; 12/2009; 2009; 2010; 31/May/2019; 01/October/2019; 1st April"

С помощью текущего регулярного выражения я могу найти все даты формата принять два, которые являются 31 / май / 2019 и 01 / октябрь / 2019

Текущий регулярное выражение, которое я использую:

(?:\d{1,2}[-/th|st|nd|rd\s]*)?(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)?[a-z\s,.]*(?:\d{1,2}[-/th|st|nd|rd)\s,]*)+(?:\d{2,4})+

Может ли кто-нибудь помочь в создании регулярного выражения для извлечения всех дат, упомянутых выше. Я хочу решить эту проблему, используя только регулярные выражения.

1 Ответ

1 голос
/ 12 февраля 2020

попробуй

dates = """04-20-2009; 04/20/09; 4/20/09; 4/3/09; Mar 20, 2009; March 20, 2009; Mar. 20, 2009; Mar 20 2009; 20 Mar 2009; 20 March 2009; 2 Mar. 2009; 20 March, 2009; Mar 20th, 2009; Mar 21st, 2009; Mar 22nd, 2009; Feb 2009; Sep 2009; Oct 2010; 6/2008; 12/2009; 2009; 2010; 31/May/2019; 01/October/2019"""

pd.to_datetime(pd.Series(dates.split(';')))


0    2009-04-20
1    2009-04-20
2    2009-04-20
3    2009-04-03
4    2009-03-20
5    2009-03-20
6    2009-03-20
7    2009-03-20
8    2009-03-20
9    2009-03-20
10   2009-03-02
11   2009-03-20
12   2009-03-20
13   2009-03-21
14   2009-03-22
15   2009-02-01
16   2009-09-01
17   2010-10-01
18   2008-06-01
19   2009-12-01
20   2009-01-01
21   2010-01-01
22   2019-05-31
23   2019-10-01
dtype: datetime64[ns]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...