用于匹配月、日和年的正则表达式
RegEx for matching the month, day and year
我试图找到一个正则表达式来从日期时间戳中提取月份、日期和年份,格式如下:
01/20/2019 12:34:54
它应该return一个列表:
['01', '20', '2019']
我知道这可以通过以下方式解决:
dt.split(' ')[0].split('/')
但是,我正试图找到一个正则表达式来做到这一点:
[^\/\s]+
但是,我需要它来排除 space 之后的所有内容。
This RegEx 可能会帮助您这样做。
([0-9]+)\/([0-9]+)\/([0-9]+)\s[0-9]+:[0-9]+:[0-9]+
代码:
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']
您绝对应该在这里利用 Python 的 date/time API。使用 strptime
将输入的日期时间字符串解析为真正的 Python 日期时间。然后,只需构建一个列表,访问您需要的各种组件。
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]
如果您真的 want/need 使用原始日期时间字符串,那么 split
提供了一个选项,甚至无需正式使用正则表达式:
dt = "01/20/2019 12:34:54"
dt = dt.split()[0].split('/')
print(dt)
['01', '20', '2019']
由于您希望日期月份和年份作为列表返回,您可以使用此 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})
并从 group1、group2 和 group3 中获取日期、月份和年份
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']
我试图找到一个正则表达式来从日期时间戳中提取月份、日期和年份,格式如下:
01/20/2019 12:34:54
它应该return一个列表:
['01', '20', '2019']
我知道这可以通过以下方式解决:
dt.split(' ')[0].split('/')
但是,我正试图找到一个正则表达式来做到这一点:
[^\/\s]+
但是,我需要它来排除 space 之后的所有内容。
This RegEx 可能会帮助您这样做。
([0-9]+)\/([0-9]+)\/([0-9]+)\s[0-9]+:[0-9]+:[0-9]+
代码:
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']
您绝对应该在这里利用 Python 的 date/time API。使用 strptime
将输入的日期时间字符串解析为真正的 Python 日期时间。然后,只需构建一个列表,访问您需要的各种组件。
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]
如果您真的 want/need 使用原始日期时间字符串,那么 split
提供了一个选项,甚至无需正式使用正则表达式:
dt = "01/20/2019 12:34:54"
dt = dt.split()[0].split('/')
print(dt)
['01', '20', '2019']
由于您希望日期月份和年份作为列表返回,您可以使用此 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})
并从 group1、group2 和 group3 中获取日期、月份和年份
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']