正则表达式用于匹配月,日和年

时间:2019-05-02 04:37:53

标签: regex python-3.x regex-lookarounds regex-group regex-greedy

我正在尝试找到一个正则表达式,以使用以下格式从日期时间戳中提取月,日和年:

01/20/2019 12:34:54

它应该返回一个列表:

['01', '20', '2019']

我知道可以使用以下方法解决此问题:

dt.split(' ')[0].split('/')

但是,我正试图找到一个正则表达式来做到这一点:

[^\/\s]+ 

但是,我需要它排除空格之后的所有内容。

3 个答案:

答案 0 :(得分:2)

由于您希望将日期月份和年份作为列表返回,因此可以使用此Python代码,

import re

s = '01/20/2019 12:34:54'
print(re.findall(r'\d+(?=[ /])', s))

打印

['01', '20', '2019']

否则,您最好将正则表达式写为

(\d{2})/(\d{2})/(\d{4})

并从组1,组2和组3获取日期,月份和年份

Regex Demo

这种方式的Python代码应该是

import re

s = '01/20/2019 12:34:54'
m = re.search(r'(\d{2})/(\d{2})/(\d{4})', s)
if m:
 print([m.group(1), m.group(2), m.group(3)])

打印

['01', '20', '2019']

答案 1 :(得分:0)

This RegEx可能会帮助您。

([0-9]+)\/([0-9]+)\/([0-9]+)\s[0-9]+:[0-9]+:[0-9]+

enter image description here

代码:

import re

string = '01/20/2019 12:34:54'
matches = re.search(r'([0-9]+)/([0-9]+)/([0-9]+)', string)
if matches:
    print([matches.group(1), matches.group(2), matches.group(3)])
else: 
    print('Sorry! No matches! Something is not right! Call 911')

输出

['01', '20', '2019']

答案 2 :(得分:0)

您绝对应该在这里利用Python的日期/时间API。使用strptime将输入的datetime字符串解析为真正的Python datetime。然后,只需建立一个列表,即可访问所需的各种组件。

dt = "01/20/2019 12:34:54"
dto = datetime.strptime(dt, '%m/%d/%Y %H:%M:%S')

list = [dto.month, dto.day, dto.year]
print(list)

[1, 20, 2019]

如果您确实希望/需要使用原始的日期时间字符串,那么split提供了一个选项,甚至没有正式使用正则表达式:

dt = "01/20/2019 12:34:54"
dt = dt.split()[0].split('/')
print(dt)

['01', '20', '2019']