正则表达式(regex)搜索';Mmm dd hh:mm:ss';使用Python 3.6的模式和组
您好,我正在编写一个正则表达式(regex)搜索';Mmm dd hh:mm:ss';使用Python 3.6的模式和组,python,regex,datetime,Python,Regex,Datetime,您好,我正在编写一个regex程序来搜索给定句子中的模式mmmdhh:mm:ss。例如,我想确定在给定的句子中是否存在诸如Mmm dd hh:mm:ss之类的模式(例如,Aug 03 50:42:08是开始工作的最佳时间)。我在这个话题下经历了那个秋天。但我仍然无法找出确切的regex模式(模板)来确定给定句子中是否存在mmmdhh:mm:ss 编辑1: >>> matched 因此,一旦确定了这种模式,应该做些什么来将那些符合该模式的句子分为一组,而将不符合该模式的句子分为
regex
程序来搜索给定句子中的模式mmmdhh:mm:ss
。例如,我想确定在给定的句子中是否存在诸如Mmm dd hh:mm:ss之类的模式(例如,Aug 03 50:42:08是开始工作的最佳时间)。我在这个话题下经历了那个秋天。但我仍然无法找出确切的regex模式(模板)
来确定给定句子中是否存在mmmdhh:mm:ss
编辑1:
>>> matched
因此,一旦确定了这种模式,应该做些什么来将那些符合该模式的句子分为一组,而将不符合该模式的句子分为另一组
目前制定的代码如下:
regexp = re.compile('[a-zA-Z]+(?=\s\d)\s\d+\s\d+:\d+:\d+')
if regexp.search('we shall meet on Jun 26 10:45:09'):
print('matched')
输出:
>>> matched
此正则表达式将遵循该模式,但不会验证月份是否正确
^[A-Z][a-z]{2} \d\d \d\d:\d\d:\d\d$
给定一个字符串,您可以尝试以下操作:
import re
s = "We will meet on Jun 10 4:12:40"
date = re.findall('[a-zA-Z]+(?=\s\d)\s\d+\s\d+:\d+:\d+', s)[0]
输出:
'Jun 10 4:12:40'
下面的表达式不会将时间与3位数字匹配,也会将时间与1位数字匹配
re.findall(r'\b\w{1,4}\d{1,2}\d{1,2}:\d{1,2}:\d{1,2}',s)
import re
s = "We will meet on June 10 14:10:40"
pattern = r'\b\w{1,4} \d{1,2} \d{1,2}:\d{1,2}:\d{1,2}'
match = re.search(pattern, s)
print s[:match.start()]
print match.group()
下面的正则表达式也将验证月份:
(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d\d \d\d:\d\d:\d\d
我认为将匹配24小时符号格式:
^(一月|二月|三月|四月|五月|六月|七月|八月|九月|十月|十一月|十二月|[1-9]|[12][0-9]|[3[01])\s([0-1]?[0-9]|[0-3]:[0-5][0-9]:[0-5]:[0-9]
- 从字符串的开头开始
^
- 匹配月份
(一月|二月|三月|四月|五月|六月|七月|八月|九月|十月|十一月|十二月)
- 匹配空白
\s
- 匹配日期
(0?[1-9]|[12][0-9]|3[01])
- 匹配空白
\s
- 以24小时为单位匹配小时数([0-1]?[0-9]| 2[0-3])
- 匹配分号
:
- 匹配会议记录
[0-5][0-9]
- 匹配分号
:
- 匹配秒数
[0-5][0-9]
- 匹配行尾
$
注意事项:此注意事项是否会处理诸如Jun 31 23:45:09之类的边缘情况您真的需要正则表达式吗?为什么不尝试使用格式字符串进行转换?@SteffiKeranRaniJ:检查额外的代码是否解决了您的问题