我试图使用正则表达式从文本中提取日期

时间:2018-04-07 16:51:40

标签: python regex

我正在尝试使用python正则表达式从'2025-03-21T12:54:41Z'文本中提取日期。

date=re.match('(\d{4})[/.-](\d{2})[/.-](\d{2})$', date[0])
print(date)

这将输出为无

另外,我试过这段代码

date_reg_exp = re.compile('\d{4}(?P<sep>[-/])\d{2}(?P=sep)\d{2}')
matches_list=date_reg_exp.findall(date[0])
for match in matches_list:
  print match

这样输出为 - 仅

请帮忙

2 个答案:

答案 0 :(得分:0)

您的正则表达式错误,因为它最后有$$断言这是字符串的结尾。

正则表达式引擎将您的字符串与正则表达式匹配,并且在匹配最后两位数后,需要$ - 字符串的结尾。但是,您的字符串在结尾之前仍然有T12:54:41Z,因此正则表达式不匹配。

要解决此问题,请移除$

>>> re.match('(\d{4})[/.-](\d{2})[/.-](\d{2})', '2025-03-21T12:54:41Z')
<_sre.SRE_Match object; span=(0, 10), match='2025-03-21'>

答案 1 :(得分:0)

不要在正则表达式末尾使用$ sigil,而是匹配行尾字符,请尝试在开头使用^

import re
date='2025-03-21T12:54:41Z'
date=re.match('^(\d{4})[/.-](\d{2})[/.-](\d{2})', date)
print(date)

python3中的输出:

<_sre.SRE_Match object; span=(0, 10), match='2025-03-21'>

Python2:

<_sre.SRE_Match object at 0x7fd191ac1ae0>