java正则表达式学习笔记之命名捕获
很多正则引擎都支持命名分组,java是在java7中才引入这个特性,语法与.Net类似(.Net允许同一表达式出现名字相同的分组,java不允许)。
命名分组很好理解,就是给分组进行命名。下面简单演示一下java中如何使用以及注意事项。
1.正则中定义名为NAME的分组
(?<NAME>X)
这里X为我们要匹配的内容,注意,在这个命名不能重复,名字也不能以数字开头!
2.反向引用NAME组所匹配到的内容
\k<NAME>
注意,反向引用是针对组所匹配到的内容,而非组的表达式。
3.替换中,引用组NAME中捕获到的字符串
${NAME}
4.获取NAME组捕获的字符串
group(String NAME)
注意:也可以使用序号对命名捕获进行引用,序号从1开始,0为正则的完整匹配结果。
下面用一个简单的正则来分别获取年月日为例:
String s = "2015-10-26"; Pattern p = Pattern.compile("(?<year>\\d{4})-(?<month>\\d{2})-(?<day>\\d{2})"); Matcher m = p.matcher(s); if (m.find()) { System.out.println("year: " + m.group("year")); //年 System.out.println("month: " + m.group("month")); //月 System.out.println("day: " + m.group("day")); //日 System.out.println("year: " + m.group(1)); //第一组 System.out.println("month: " + m.group(2)); //第二组 System.out.println("day: " + m.group(3)); //第三组 } System.out.println(s.replaceAll("(?<year>\\d{4})-(?<month>\\d{2})-(?<day>\\d{2})", "${day}-${month}-${year}")); //将 年-月-日 形式的日期改为 日-月-年 形式
输出结果
year: 2015 month: 10 day: 26 year: 2015 month: 10 day: 26 26-10-2015
以上就是本文的全部内容,希望对大家的学习有所帮助。
相关文章
浅析Bean Searcher 与 MyBatis Plus 区别介绍
Bean Searcher号称任何复杂的查询都可以一行代码搞定,但 Mybatis Plus 似乎也有类似的动态查询功能,最近火起的 Bean Searcher 与 MyBatis Plus 倒底有啥区别?带着这个问题一起通过本文学习下吧2022-05-05Spring Cloud Ribbon 负载均衡使用策略示例详解
Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端负载均衡工具,Ribbon客户端组件提供了一系列的完善的配置,如超时,重试等,这篇文章主要介绍了Spring Cloud Ribbon 负载均衡使用策略示例详解,需要的朋友可以参考下2023-03-03idea Maven 插件 docker-maven-plugin 打包docker镜像上传到远程仓库的过程详解
这篇文章主要介绍了idea Maven插件docker-maven-plugin打包docker镜像上传到远程仓库,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-05-05prometheus监控springboot应用简单使用介绍详解
这篇文章主要介绍了prometheus监控springboot应用简单使用介绍详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2019-05-05
最新评论