源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

java正则表达式学习笔记之命名捕获

  • 时间:2021-09-05 02:58 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:java正则表达式学习笔记之命名捕获
很多正则引擎都支持命名分组,java是在java7中才引入这个特性,语法与.Net类似(.Net允许同一表达式出现名字相同的分组,java不允许)。 命名分组很好理解,就是给分组进行命名。下面简单演示一下java中如何使用以及注意事项。 [b]1.正则中定义名为NAME的分组 [/b](?<NAME>X) 这里X为我们要匹配的内容,注意,在这个命名不能重复,名字也不能以数字开头! [b]2.反向引用NAME组所匹配到的内容 [/b]\k<NAME> 注意,反向引用是针对组所匹配到的内容,而非组的表达式。 [b]3.替换中,引用组NAME中捕获到的字符串 [/b]${NAME} 4.获取NAME组捕获的字符串 group(String NAME) 注意:也可以使用序号对命名捕获进行引用,序号从1开始,0为正则的完整匹配结果。 下面用一个简单的正则来分别获取年月日为例: [img]http://files.jb51.net/file_images/article/201602/2016219141350823.png?201611914145[/img]
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
以上就是本文的全部内容,希望对大家的学习有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部