`
su1216
  • 浏览: 670967 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Group-logo
深入入门正则表达式(jav...
浏览量:71916
E60283d7-4822-3dfb-9de4-f2377e30189c
android手机的安全问...
浏览量:128763
社区版块
存档分类
最新评论

深入入门正则表达式(java) - 命名捕获

阅读更多

深入入门正则表达式(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: 2015
month: 10
day: 26
year: 2015
month: 10
day: 26
26-10-2015

 

 

转贴请保留以下链接

本人blog地址

http://su1216.iteye.com/

http://blog.csdn.net/su1216/

6
5
分享到:
评论

相关推荐

    精通正则表达式-第三版-简体中文版

    2. **Java**:从Java 1.4开始引入java.util.regex包,支持正则表达式,Java 1.5和1.6增加了更多特性。 3. **PHP**:PHP在后来的版本中增加了内置的正则表达式支持,提供了preg_match系列函数。 4. **JavaScript**...

    正则表达式详细文档CHM版.rar

    - 其他学习资料,如《Mastering Regular Expressions》、《正则表达式30分钟入门教程》等,也是学习正则表达式的优秀参考资料。 通过深入学习和实践,你可以利用正则表达式解决各种文本处理问题,提高代码的效率和...

    精通正则表达式~~~

    模拟命名捕获... 344 效率... 347 办法不只一种... 348 表达式编译、/o修饰符、qr/···/和效率... 348 理解“原文”副本... 355 Study函数... 359 性能测试... 360 正则表达式调试信息... 361 结语... ...

    正则表达式30分钟入门教程

    在这个30分钟入门教程中,我们将深入了解正则表达式的基本概念、语法以及常见应用。 一、正则表达式基本概念 1. 元字符:在正则表达式中,有一些具有特殊含义的字符,如`.`表示任意字符,`^`表示行首,`$`表示行尾...

    Mastering Regular Expressions Powerful Techniques for Perl and Other Tools

    本书的第二部分提供了扩展的入门示例,用以深入阐释如何在Perl和其他编程环境中运用正则表达式。作者介绍了Perl语言,并展示了如何用正则表达式匹配文本。这些示例旨在帮助读者更好地掌握正则表达式的用法,从而在...

    Java SE编程入门教程 java类和对象方法以及包的使用(共56页).pptx

    17. **正则表达式**:正则表达式是用于匹配字符串的强大工具,Java提供了Pattern和Matcher类来处理正则表达式。 18. **设计模式**:设计模式是解决常见编程问题的成熟解决方案,Java开发中常见的有工厂模式、单例...

    毕向东Java SE视频教程整理笔记

    - **正则表达式介绍**:正则表达式是一种强大的文本匹配工具,Java中通过java.util.regex包提供的类来实现正则表达式的操作。 #### 第十三章至第十五章:Web前端技术 - **HTML/CSS/JavaScript基础**:这部分介绍了...

    java学习资料

    9. **java正则表达式.zip**:正则表达式是字符串匹配和操作的强大工具,在Java中广泛用于输入验证和数据处理。这部分资料可能包含正则表达式的语法、预定义字符类和高级匹配技巧。 通过深入学习这些内容,开发者...

    Java SE编程入门教程 java封装继承多态(共56页).pptx

    15. **正则表达式**:Java的`java.util.regex`包提供了正则表达式的处理,用于文本匹配和替换。 16. **Java内存管理**:包括垃圾收集(GC),自动内存管理,以及`instanceof`关键字用于检查对象是否属于某个类或其...

    ECMAScript 2018快速入门

    - **反向引用**:在正则表达式中,可以通过`\k&lt;name&gt;`引用前面的命名捕获组。 4. **Rest/Spread属性** 之前,rest参数`...args`允许函数接收不定数量的参数,而spread运算符`...`可以用来合并数组或对象。在ES...

    JAVA经典教材笔记

    - 正则表达式的用途:模式匹配。 - Pattern类与Matcher类的使用。 - **定时调度** - 定时任务的实现:使用Timer类或ScheduledExecutorService接口。 - 定时任务的调度策略:固定延迟、固定周期等。 - **...

    J2EE开发全程实录PDF J2EE开发全程实录PDF

    - **正则表达式入门**: - **元字符用法**:包括`^`(开头)、`$`(结尾)、`.`(任意字符)、`*`(零次或多次重复)、`+`(一次或多次重复)、`?`(零次或一次重复)、`[]`(字符集合)、`()`(捕获组)等。 - **...

    JAVA培训叫j2se课件

    9. **Java API使用**:熟悉常用类库,如Math类,日期时间API,正则表达式,以及IO和NIO库。 10. **编译与运行**:学习如何使用IDE(如Eclipse或IntelliJ IDEA)进行代码编辑、编译和运行,以及如何通过命令行执行...

    Beginning Python Using Python 2.6 and Python 3.1 - 2010.pdf

    - **正则表达式**:讲解正则表达式的语法和用法,以及如何使用re模块进行文本匹配和替换。 - **字符串解析**:介绍如何解析复杂字符串,包括分隔符和编码问题的处理。 #### 测试(Chapter 12) - **单元测试**:...

    Java Script v5.5 教學.chm

    8. **正则表达式**:JavaScript支持正则表达式,用于文本匹配和替换,提供了丰富的模式和修饰符。 9. **错误处理**:JavaScript的错误处理通常通过try/catch块来实现,可以捕获并处理运行时错误。 10. **JSON...

    AIC的Java课程1-6章

     理解正则表达式,学会使用String.matches方法,Pattern和Matcher类进行模式匹配。  学会使用String.split方法,Scanner类,StringTokenizer类分解字符串。  [*]利用Formatter类的printf或format...

    java私塾学习笔记整理

    Java通过`java.util.regex`包提供了正则表达式的支持,可用于文本匹配、搜索和替换等。 **四、StringBuffer类和StringBuilder类** `StringBuffer`和`StringBuilder`都用来表示可变字符序列,但`StringBuilder`是非...

Global site tag (gtag.js) - Google Analytics