我正在使用 Python 工作,需要能够读取一串文本并识别文本中提到的所有年份。
年份将在 1800 到 2099 之间,并且可以采用几种不同的形式:
1955
'55
55
我的正则表达式很糟糕,我需要小心避免匹配 19
然后 55
,195 -> [19]5
,或20178
。
最佳答案
这样就可以了:\d{4}|'\d{2}|\d{2}
编辑1:
如果正则表达式用作验证(而不是提取,又名您可以假设字符串的唯一内容是数字),您可以使用此 ^(\d{4}|'\d{2}|\d{2})$
编辑2:
如果正则表达式用作提取,您可以使用此 (?<!\d)(\d{4}|'\d{2}|\d{2})(?!\d)
然而,它比前面提到的要慢,因为它同时使用前瞻和后瞻。
import re
m = re.findall(r"(?<!\d)(\d{4}|'\d{2}|\d{2})(?!\d)", "1955 '55 55 195 20567")
print(m) # ['1955', "'55", '55']
关于python - 正则表达式识别不同形式的年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43954426/