java - java中的正则表达式提取日期和时间
问题描述
以下是每个字符串中的示例日期时间格式
March 9 12:31 AM and March 10 7:30 AM
March 11 7:30 AM and March 12 10:30 AM
March 31 9:00 PM and April 1 12:39 AM
March 31 10:11 PM and April 1 5:23 AM
7:45 PM and 10:30 PM
我的字符串包含以下类型的日期。需要从每个字符串中提取两个日期时间。
例如:从字符串 1 需要提取日期时间,例如:
March 9 12:31 AM
March 10 7:30 AM
它应该适用于所有月份名称。我不想验证每个月的 30 天或 31 天。
这是我目前的正则表达式。有时将小时视为日期
(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|(Nov|Dec)(?:ember)?)|(\\s)[\\d]{1,2}(?!:)|(\\s)(1[012]|[1-9]):[0-5][0-9](\\s)(?i)(am|pm)+
谁能帮我解决这个问题
解决方案
正则表达式:
(?:(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|(Nov|Dec)(?:ember)?)\s[\d]{1,2}\s)?(?:1[012]|[1-9]):[0-5][0-9]\s(?:am|pm)
解释
(?:(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|(Nov|Dec)(?:ember)?)\s[\d]{1,2}\s)?
匹配 0 或 1 个月和日期组合
推荐阅读
- reactjs - 使用 DrawerNavigator 时 this.props.navigation.goback() 无法正常工作
- c++ - 从 boost binary_iarchive 读取的数据不正确
- agda - 表示同态而不写出所有定律
- git - 当提交已经合并时,将提交重新设置到 master
- python - 在python中,如何在不同对象之间共享(引用)一个变量作为属性?
- node.js - 使用文本输入上传文件的最佳方式
- angular - 模板解析错误:不是已知元素
- sql - 在 Select 语句中使 Oracle 条件可选
- angular - 使用 GraphQL 和 React 比使用 GraphQL 和 Vue/Ember/Angular 有什么好处吗?
- javascript - 如何在本地地址和网址/备用地址之间切换锚链接?