有人能帮助我使用python的正则表达式,它完全匹配格式为yyyy
,也就是说,它不应该匹配任何日期,比如mm-dd-yyyy
/Month dd, yyyy
/dd Month, yyyy
等
很容易找到以yyyy
开头的匹配项。但当它处于中间或末端时,就变得越来越困难。所有其他格式的日期都已匹配。所以要避免重复。
例如:
- “在
1984
发生的火车事故造成了巨大的死亡人数”—应该是匹配的 - “其中一名受伤者死于
Jun 10 1984
”不应匹配 - '
Sep 15, 1984
….'-不应匹配
Tags:
只与年字段匹配的“basic”regex是
\d{4}
但这还不够。 我们必须在年前禁止:这可以通过负lookbehind实现:
但请注意:
,
)所以我们不能把
,*
放在日字段之后。在幸运的是,这个案子不是很复杂,我们可以绕过它 限制,使用两个否定lookbehind,一个后面有逗号 一天一天,另一天没有。在
因此,整个regex可以如下所示:
^{pr2}$如果不允许在开头只使用实际的月份名称 (不是任何3个字母的单词),将
\w{3}
的两个实例替换为:编辑
另一个解决方案是,“意识到”月份名称的完整名称是: 最初捕获两个组:
总而言之:
然后,在后处理阶段,您必须:
但是如果刚才提到的测试失败了,那么捕获组2包含 您要查找的年份字段。在
相关问题 更多 >
编程相关推荐