在python中匹配2001 - 2100年的正则表达式

时间:2014-02-02 03:13:39

标签: python regex

r = re.compile('2100 | (20((0[1-9])|([1-9][0-9])))')

似乎不起作用。但我认为我做的一切都是正确的 匹配2001年至2100年......必定是一些误解...... 它甚至不匹配2100 ......

t = re.compile('\b(?:2100|(20((0[1-9])|([1-9][0-9]))))\b')
print (t.match('2000'))
print (t.match('2100'))
print (t.match('2020'))
print (t.match('1980'))
print (t.match('2050'))

None
None
None
None
None

2 个答案:

答案 0 :(得分:2)

您需要的正则表达式为2100|200[1-9]|20[1-9][0-9]

答案 1 :(得分:0)

删除空格,你的正则表达式就可以正常工作了:

r = re.compile('2100|(20((0[1-9])|([1-9][0-9])))')

您可能还想添加负面外观以确保不超过4位:

r = re.compile('(?<!\d)(?:2100|200[1-9]|20[1-9]\d)(?!\d)')

我将表达式简化了一点。