【发布时间】:2015-07-04 16:11:56
【问题描述】:
我希望使用正则表达式在句子中匹配 1980 年到 2050 年之间的年份。
到目前为止我使用的是:
def within_years(d):
return re.search('20[0-5][0-9]', d) or re.search('19[89][0-9]', d)
现在的问题是我也匹配“22015”。
所以我想在前面加上[^0-9],但是如果它在句子的开头,它就不能匹配年份。
接下来是添加[ /-]*,但它仍然只是可选的。
一些例子:
should_match = ['2015 is a great year', 'best year: 2015']
should_not_match = ['22015 bogus', 'a2015 is not a year']
【问题讨论】:
-
很好奇 - 为什么使用正则表达式而不是
<和>?似乎它会更容易并且不太可能出现错误 -
将其解析为 int 并使用简单的
1980 <= x <= 2050