Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式(regex)搜索';Mmm dd hh:mm:ss';使用Python 3.6的模式和组_Python_Regex_Datetime - Fatal编程技术网

正则表达式(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位数字匹配

  • 与6月10日14:100:40不匹配
  • 与Jun 100 14:10:40不匹配
  • 匹配6月或6月(如果不想接受6月,则将4替换为3

    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:检查额外的代码是否解决了您的问题