首页 > 解决方案 > 正则表达式:如何匹配 2 个或更多日期中的第二个

问题描述

我试图仅在可能存在多个日期的第二个日期返回匹配项。在匹配之前或之后没有真正一致的词。这可能吗?

另外值得注意的是,日期可以被格式化为01-01-100101/01/1001January 01, 2001(尽管最后一个带有月份拼写的情况并不常见)。

下面是我尝试匹配的一些文本的示例,粗体的第二个日期是我希望它返回的示例。

此处有一些文本字段 此处
有其他文本字段
Exp: 03/31/15
Page:
1
2129364
23675918 INTERNET
05/04/14
12:04 PM MAY
ULTIMATE
42159497 93736662
WEB
04-11-18
征税项目
2018 年 6 月 14 日

标签: regex

解决方案


我试过这段代码,它似乎工作

(?<=(.|\n)*?(\d{2}|January)(\s|\/|-)\d{2}(\s|\/|-)(\d{2}|\d{2})(\s|\/|-))(.|\n)*? 
(\d{2}|January)(\s|\/|-)\d{2}(\s|\/|-)(\d{2}|\d{2})(\s|\/|-)

此代码基本上搜索您正在寻找的模式,在相同模式之前,并且可选地由其他符号环绕(包括换行符)。还有一个建议:如果你想测试正则表达式模式,你可能想看看这个网站

在那里,您还可以在语言之间切换(我使用过 javascript),尽管在我看来基本保持不变。


推荐阅读