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
答案 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)')
我将表达式简化了一点。