regex - 正则表达式:如何匹配 2 个或更多日期中的第二个
问题描述
我试图仅在可能存在多个日期的第二个日期返回匹配项。在匹配之前或之后没有真正一致的词。这可能吗?
另外值得注意的是,日期可以被格式化为01-01-1001
、01/01/1001
或January 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 日
解决方案
我试过这段代码,它似乎工作
(?<=(.|\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),尽管在我看来基本保持不变。
推荐阅读
- apache-kafka - 如何在 Java 中使用 Kafka Admin Client 获取 Kafka 任何已提交偏移的提交时间?
- mysql - 如何仅获取具有多个值的事件?
- c# - ASP.NET MVC EF-Migrations - 如何从包含表和所有已保存记录的数据库中创建 SCRIPT
- python - Python中彩色图像的渐变
- angular - 未捕获的错误:模块的加载超时:路由,uipagestartup(Angular 应用程序)
- msbuild - 在 MSBuild 中添加到 AssemblySearchPaths 的路径
- jquery - lazyload.js - 重复图像问题
- c# - Jenkins 失败的单元 CanExecute 测试的方法不确定
- angular - 使用 Angular 中的 Observable 完成我的休息调用后如何执行一些代码
- windows - 更新通知中心 Azure WNS 时出错