java正则表达式学习笔记之命名捕获
很多正则引擎都支持命名分组,java是在java7中才引入这个特性,语法与.Net类似(.Net允许同一表达式出现名字相同的分组,java不允许)。
命名分组很好理解,就是给分组进行命名。下面简单演示一下java中如何使用以及注意事项。
1.正则中定义名为NAME的分组
(?
这里X为我们要匹配的内容,注意,在这个命名不能重复,名字也不能以数字开头!
2.反向引用NAME组所匹配到的内容
\k
注意,反向引用是针对组所匹配到的内容,而非组的表达式。
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
以上就是本文的全部内容,希望对大家的学习有所帮助。
更多java正则表达式学习笔记之命名捕获相关文章请关注PHP中文网!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

Java的类上载涉及使用带有引导,扩展程序和应用程序类负载器的分层系统加载,链接和初始化类。父代授权模型确保首先加载核心类别,从而影响自定义类LOA

本文讨论了使用咖啡因和Guava缓存在Java中实施多层缓存以提高应用程序性能。它涵盖设置,集成和绩效优势,以及配置和驱逐政策管理最佳PRA

本文讨论了使用JPA进行对象相关映射,并具有高级功能,例如缓存和懒惰加载。它涵盖了设置,实体映射和优化性能的最佳实践,同时突出潜在的陷阱。[159个字符]

本文讨论了使用Maven和Gradle进行Java项目管理,构建自动化和依赖性解决方案,以比较其方法和优化策略。

本文使用Maven和Gradle之类的工具讨论了具有适当的版本控制和依赖关系管理的自定义Java库(JAR文件)的创建和使用。
