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