深入入门正则表达式(java) - 命名捕获
深入入门正则表达式(java) - 引言 深入入门正则表达式(java) - 1 - 入门基础 深入入门正则表达式(java) - 3 - 正则在java中的使用 深入入门正则表达式(java) - 匹配原理 - 1 - 引擎分类与普适原则 深入入门正则表达式(java) - 匹配原理 - 2 - 回溯 深入入门正则表达式(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 转贴请保留以下链接 本人blog地址 http://su1216.iteye.com/ http://blog.csdn.net/su1216/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |