gpt4 book ai didi

python - 正则表达式匹配 1980 年和 2050 年之间的年份

转载 作者:太空宇宙 更新时间:2023-11-04 08:54:45 24 4
gpt4 key购买 nike

我希望使用正则表达式匹配句子中 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']

最佳答案

您可以使用单个正则表达式:

(19[89][0-9]|20[0-4][0-9]|2050)

你应该在它周围添加 \b 边界,以确保它们周围没有任何东西:

\b(19[89][0-9]|20[0-4][0-9]|2050)\b
>>> valid_year = re.compile(r'\b(19[89][0-9]|20[0-4][0-9]|2050)\b')
>>> should_match = ['2015 is a great year', 'best year: 2015']
>>> should_not_match = ['22015 bogus', 'a2015 is not a year']
>>> for s in should_match:
print(valid_year.search(s))

<_sre.SRE_Match object; span=(0, 4), match='2015'>
<_sre.SRE_Match object; span=(11, 15), match='2015'>
>>> for s in should_not_match:
print(valid_year.search(s))

None
None

关于python - 正则表达式匹配 1980 年和 2050 年之间的年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31222686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com