Java日期正则表达式(附Demo)
目录
- 前言
- 1. 基本知识
- 2. Demo
前言
对于正则匹配,在项目实战中运用比较广泛
原先写过一版Python相关的:ip和端口号的正则表达式
1. 基本知识
对于日期的正则相对比较简单
以下是一些常见的日期格式及其对应的正则表达式示例:
-
年-月-日(YYYY-MM-DD):
正则表达式:\d{4}-\d{2}-\d{2}
示例:2024-04-11
-
年/月/日(YYYY/MM/DD):
正则表达式:\d{4}/\d{2}/\d{2}
示例:2024/04/11
-
月/日/年(MM/DD/YYYY):
正则表达式:\d{2}/\d{2}/\d{4}
示例:04/11/2024
-
日/月/年(DD/MM/YYYY):
正则表达式:\d{2}/\d{2}/\d{4}
示例:11/04/2024
-
年月日无分隔符(YYYYMMDD):
正则表达式:\d{8}
示例:20240411
2. Demo
由于实战中运用到某些逻辑
假设数据如下:"2024-04-28~2024-05-05"
需要的数据只要后半部分的年月
类似Demo如下:
import java.util.regex.Matcher; import java.util.regex.Pattern; public class test { public static String extractYearMonth(String date) { String monthYearPattern = "\\d{4}-(\\d{2})-\\d{2}~(\\d{4})-(\\d{2})-\\d{2}"; Pattern pattern = Pattern.compile(monthYearPattern); Matcher matcher = pattern.matcher(date); if (matcher.find()) { return matcher.group(2) + "-" + matcher.group(3); // 返回匹配到的年月部分 } else { return null; // 如果没有匹配到,返回 null } } public static void main(String[] args) { String weekPlanTime = "2024-04-28~2024-05-05"; String monthYear = extractYearMonth(weekPlanTime); System.out.println(monthYear); // 输出 "04" } }截图如下:
补充group的知识点
- Matcher 类是用于在字符串中执行正则表达式匹配操作的引擎,可以在输入字符串中进行正则表达式的匹配和搜索。- 使用 Matcher 对象执行匹配后,你可以使用 group() 方法来检索匹配的子序列
group() 方法有几种不同的形式,但最常用的是不带参数的形式,返回整个模式匹配的子序列
还可以使用带参数的 group(int group) 方法,返回指定捕获组的匹配子序列
捕获组是用圆括号 () 括起来的正则表达式的一部分,可以在匹配时从输入字符串中提取出来
使用了 matcher.group(2),这表示我们提取了正则表达式模式中的第二个捕获组,也就是结束日期的年份部分
- matcher.group(1) 代表04
- matcher.group(2) 代表2024
- matcher.group(3) 代表05
对于个别日期比较灵活,可以使用这种方式:
import java.util.regex.Matcher; import java.util.regex.Pattern; public class test { public static String extractYearMonth(String date) { String monthYearPattern = "\\d{4}-(\\d{1,2})-\\d{1,2}~(\\d{4})-(\\d{1,2})-\\d{1,2}"; Pattern pattern = Pattern.compile(monthYearPattern); Matcher matcher = pattern.matcher(date); if (matcher.find()) { return matcher.group(2) + "-" + matcher.group(3) ; // 返回匹配到的年月部分 } else { return null; // 如果没有匹配到,返回 null } } public static void main(String[] args) { String weekPlanTime = "2024-4-28~2024-5-5"; String monthYear = extractYearMonth(weekPlanTime); System.out.println(monthYear); // 输出 "04" } }截图如下:
- Matcher 类是用于在字符串中执行正则表达式匹配操作的引擎,可以在输入字符串中进行正则表达式的匹配和搜索。- 使用 Matcher 对象执行匹配后,你可以使用 group() 方法来检索匹配的子序列
-
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!


