深入入门正则表达式(java) - 命名捕获
来源:互联网 发布:监控计算机的软件 编辑:程序博客网 时间:2024/05/01 21:29
深入入门正则表达式(java) - 引言
深入入门正则表达式(java) - 1 - 入门基础
深入入门正则表达式(java) - 2 - 基本实例
深入入门正则表达式(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为正则的完整匹配结果。
下面用一个简单的正则来分别获取年月日为例:
深入入门正则表达式(java) - 引言
深入入门正则表达式(java) - 1 - 入门基础
深入入门正则表达式(java) - 2 - 基本实例
深入入门正则表达式(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: 2015month: 10day: 26year: 2015month: 10day: 2626-10-2015
- 深入入门正则表达式(java) - 命名捕获
- 深入入门正则表达式(java) - 命名捕获
- Java 正则表达式 - 命名捕获组
- 深入入门正则表达式(java) - 引言
- 深入入门正则表达式(java) - 引言
- 深入入门正则表达式(java) - 1 - 入门基础
- 深入入门正则表达式(java) - 1 - 入门基础
- jdk7正则表达式-命名捕获组(named capture)
- [疯狂Java]正则表达式:捕获组、反向引用、捕获组命名
- .NET正则表达式的命名捕获
- JDK7 正则表达式 捕获组命名
- 深入入门正则表达式(java) - 2 - 基本实例
- 深入入门正则表达式(java) - 匹配原理 - 2 - 回溯
- 深入入门正则表达式(java) - 2 - 基本实例
- 深入入门正则表达式(java) - 匹配原理 - 2 - 回溯
- 深入入门正则表达式(java) - 匹配原理 - 2 - 回溯
- 深入入门正则表达式(java) - 匹配原理 - 2 - 回溯
- java正则表达式捕获组
- 【SSH (五)】登录权限 拦截器
- 如何在Oracle Linux环境上安装yum
- Android总结篇系列:Android广播机制
- Android相对布局中alignParentRight与父布局Wrap_Content冲突
- C# 的TCPClient异步连接与异步读数据
- 深入入门正则表达式(java) - 命名捕获
- Java开发岗位面试题归类汇总
- java for循环跳出(break)/结束本次(continue)多重循环
- Android Studio 1.5.1最新版下载地址
- STM32 ADC的规则通道和注入通道的区别
- Minimum Size Subarray Sum
- IQKeyBoardManager - 不用写一行代码就完美解决IOS开发键盘遮挡的类库
- 解决weblogic的JDK和编码问题
- 从Postgres95到PostgreSQL9.5:新版亮眼特性