python - 正则表达式识别不同形式的年份

标签 python regex

我正在使用 Python 工作,需要能够读取一串文本并识别文本中提到的所有年份。

年份将在 1800 到 2099 之间,并且可以采用几种不同的形式:

  • 1955
  • '55
  • 55

我的正则表达式很糟糕,我需要小心避免匹配 19 然后 55195 -> [19]5,或20178

最佳答案

这样就可以了:\d{4}|'\d{2}|\d{2}

Live demo

编辑1:
如果正则表达式用作验证(而不是提取,又名您可以假设字符串的唯一内容是数字),您可以使用此 ^(\d{4}|'\d{2}|\d{2})$

Live demo

编辑2:
如果正则表达式用作提取,您可以使用此 (?<!\d)(\d{4}|'\d{2}|\d{2})(?!\d)然而,它比前面提到的要慢,因为它同时使用前瞻和后瞻。

Live demo

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/

相关文章:

regex - 如何为相似字符编写 JPQL 查询

javascript - 正则表达式中的通配符

regex - 忽略正则表达式中的特定字符

python - 以 f-String 格式列出\n

python - 在tensorflow中初始化变量、变量范围和import_graph_def

python - 循环中的多处理, "Pool not running"错误

c# - python/C++/C#/Java 中两个句子之间的相关性?

python - 使用日期的 Pandas 数据框中的列算法

javascript - 为字符串中重复的连续字符编写正则表达式

javascript - REGEX - 在括号之后获取数据直到结束括号