正则表达式匹配Python中的非数字值或字符串结尾

时间:2015-04-02 14:34:17

标签: python regex

我试图将日期格式与正则表达式进行匹配。每个的示例日期是:

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)。

1 个答案:

答案 0 :(得分:1)

您正在寻找的是字边界,即:

re.compile("\\b([0-9]{2}) ([A-Z][a-z]{2}) ([0-9]{2})\\b")

这将确保在尝试匹配示例中的第一个日期时,不匹配4位数年份。

但是你应该考虑Python date parse routine