我试图将日期格式与正则表达式进行匹配。每个的示例日期是:
02 Apr 15
02 Apr 2015
我用来匹配第一个的正则表达式是:
re.compile("([0-9]{2}) ([A-Z][a-z]{2}) ([0-9]{2})")
第二个:
re.compile("([0-9]{2}) ([A-Z][a-z]{2}) ([0-9]{4})")
现在我遇到的问题是,第二个日期将匹配第一个正则表达式,即使它包含4个数字而不是2个。我想在正则表达式中添加行尾,但有时会有附加的时间(即4:32)。所以我想做的是让第一个正则表达式与相应的日期相匹配,之后可能没有任何东西,或之后没有空格+东西。所以第一个应该匹配:
"02 Apr 15"
"02 Apr 15 5:23"
但不匹配:
"02 Apr 2015"
"02 Apr 2015 5:23"
它应该为其他正则表达式而失败。所以,很重要的是,唯一重要的值是前三个(dd Mmm YY和dd Mmm YYYY)。
答案 0 :(得分:1)
您正在寻找的是字边界,即:
re.compile("\\b([0-9]{2}) ([A-Z][a-z]{2}) ([0-9]{2})\\b")
这将确保在尝试匹配示例中的第一个日期时,不匹配4位数年份。
但是你应该考虑Python date parse routine