python - 正则表达式:(日期/时间)每个部分之间的相同项目

标签 python regex

编写一个简单的正则表达式来查找字符串中的日期和时间。 当刺痛中有特定日期时,识别时间项目会出现一个小问题。这是正则表达式:

TIME_REGEX = "([0-1][0-9]|2[0-3])[:\-\_]?([0-5][0-9])[:\-\_]?([0-5][0-9])"

问题是我需要接受数字之间没有任何内容的时间值,因此有两个“[:-_]?”部分。但是,即使两者不同,正则表达式也会匹配。因此,这也将匹配日期“2011-07-30”,即时间 20:11:07。

我可以更改正则表达式,使数字之间的两项相同,从而匹配“201107”和“20-11-07”,但不匹配“2011-07”或“20:11-07”?

最佳答案

您可以将分隔符存储在组中并重复使用:

TIME_REGEX = "([0-1][0-9]|2[0-3])(?P<sep>[:\-\_]?)([0-5][0-9])(?P=sep)([0-5][0-9])"

在这里,(?P<sep>...)将此组的内容存储在名称 sep 下,我们用 (?P+<sep>) 来诡计。 。这样,两项就必须始终相等。

示例:

for test in ['201107', '20-11-07', '20-11:07']:
    match = re.match(TIME_REGEX, test)
    if match:
        print test, match.group(1, 3, 4), "delimiter: '{}'".format(match.group('sep'))

产量:

201107 ('20', '11', '07') delimiter: ''
20-11-07 ('20', '11', '07') delimiter: '-'

关于python - 正则表达式:(日期/时间)每个部分之间的相同项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50724024/

相关文章:

python - 获取 Ubuntu 或 Python 中打开的目录/浏览器的路径或 url?

python - 如何将不同大小的数组列表从 python 传递到 C?

python - 如何通过 mod-wsgi 使用 FCKEditor 的图像上传和浏览器?

javascript - 捕获字符串中出现的正则表达式组

regex - mongodb正则表达式大写五个字母

java - 如何从 java 中的字符串中删除这些子字符串?

python - 性能缓慢 - Python(代码)

python - 删除附加到单词的所有数字 - Python

javascript - 替换第二组 [ 和 ] 之间的字符串

javascript - 如何生成保留标点符号的简单字谜?