【发布时间】:2019-10-04 16:35:10
【问题描述】:
import re
s = '01.11.11 12/12/1981 1*51*12 . 22|1|13 03-02-1919 1-22-12 or 01-23-18 or 03-23-1984 01.11.18 or 2.2.17 or 02.02.18 or 12.1.16 12.23.1943 01-23-11 not 12.23.192 not 02.02.1'
我有以下字符串 s 并且我想提取由 3 个项目分隔的所有日期:或者 1) 句点,例如01.11.11 或 2) 破折号,例如1-22-12 或 3) 反斜杠,例如12/12/1981。
为此,我尝试了以下方法
reg = r'\d{1,2}.\d{1,2}.(?:\d{4}|\d{2})'
r1 = re.findall(reg,s)
它有效,但给了我一些不需要的东西,例如 '1*51*12' 和 22|1|13'
['01.11.11',
'12/12/1981',
'1*51*12',
'22|1|13',
'03-02-1919',
'1-22-12',
'01-23-18',
'03-23-1984',
'01.11.18',
'2.2.17',
'02.02.18',
'12.1.16',
'12.23.1943',
'01-23-11',
'12.23.19']
我希望我的输出是
['01.11.11',
'12/12/1981',
'03-02-1919',
'1-22-12',
'01-23-18',
'03-23-1984',
'01.11.18',
'2.2.17',
'02.02.18',
'12.1.16',
'12.23.1943',
'01-23-11',
'12.23.19']
如何调整 reg 以更具体并获得我想要的输出?
【问题讨论】:
-
是月份和年份之间的一天还是第一天?到目前为止,如果您根本没有在正则表达式中指定最大值而只使用
\d,您将得到的将是 99/99/99,您需要更具体
标签: regex python-3.x string text