我正在尝试使用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
这样输出为 - 仅
请帮忙
答案 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>