【发布时间】:2019-10-06 21:05:00
【问题描述】:
import re
s = '01.20/15 01/20.1915 1/1/19 01.11.11 1.8-24 3-4.12 01/20-09 12/12/1981 12-01/2001 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,这是对making regex more specific to exclude certain characters的修改
我想获取所有日期,所以我使用
reg = r'\b((?:\d{1,2}(?:\.|\/|-)){2}(?:\d{4}|\d{2}))\b'
r1 = re.findall(reg,s)
r1
我得到了
['01.20/15',
'01/20.1915',
'1/1/19',
'01.11.11',
'1.8-24',
'3-4.12',
'01/20-09',
'12/12/1981',
'12-01/2001',
'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']
这与我想要的很接近,但我不想要混合了 . 或 / 或 - 的字符串,例如'01.20/15' 或 '3-4.12' 或 3-4.12 等
我想要的输出是这样的
['1/1/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']
其中不包含任何混合有. 或/ 或- 的数字,例如'01.20/15' 或 '3-4.12'
我也试过修改reg
reg = r'\b((?:\d{1,2}(?:\.\b|\\b/|-\b)){2}(?:\d{4}|\d{2}))\b'
但这并不完全有效
如何进一步修改reg 以获得我想要的输出?
【问题讨论】:
标签: regex python-3.x string text