关于java正则表达式非捕获型括号和捕获型括号的研究
来源:互联网 发布:mac word 转pdf 不成功 编辑:程序博客网 时间:2024/04/25 02:08
今天在做一个正则表达式的解析时,突然看见一个?:的例子,就看不懂了,然后在网上查了下,竟然是非捕获型括号,意思就是匹配pattern,但不包含在match的group方法里面。
(?: pattern)是非捕获型括号 匹配pattern,但不捕获匹配结果。
(pattern )是捕获型括号。 匹配pattern,匹配pattern并捕获结果,自动获取组号
深入了解还得看例子:
例一:
@Testpublic void test9(){Pattern p = Pattern.compile("(\\d+,)(\\w+)");String s = "123,abc-78,def";Matcher m = p.matcher(s);while(m.find()){ System.out.println("m.group():"+m.group()); //打印所有 System.out.println("m.group(1):"+m.group(0)); //打印所有 System.out.println("m.group(1):"+m.group(1)); //打印数字的 System.out.println("m.group(2):"+m.group(2)); //打印字母的}}
输出:
m.group():123,abc
m.group(1):123,abc
m.group(1):123,
m.group(2):abc
m.group():78,def
m.group(1):78,def
m.group(1):78,
m.group(2):def
例二:
@Testpublic void test10(){Pattern p = Pattern.compile("(\\d+)-(\\d+)-(\\d+)\\s+([A-z]+)\\s+([A-z]+)\\s+(\\d+):(\\d+)");String s = "2013-10-26 wei test 15:39";Matcher m = p.matcher(s);if(m.find()){System.out.println(m.groupCount());System.out.println("m.group():"+m.group()); //2013-10-26 wei test 15:39System.out.println("m.group():"+m.group(0)); //2013-10-26 wei test 15:39System.out.println("m.group(1):"+m.group(1)); //2013System.out.println("m.group(2):"+m.group(2)); //10System.out.println("m.group(3):"+m.group(3)); //26System.out.println("m.group(4):"+m.group(4)); //weiSystem.out.println("m.group(5):"+m.group(5)); //testSystem.out.println("m.group(6):"+m.group(6)); //15System.out.println("m.group(7):"+m.group(7)); //39}}
例三:
@Testpublic void test11(){Pattern p = Pattern.compile("((\\d+)-(\\d+)-(\\d+))\\s+([A-z]+)\\s+([A-z]+)\\s+((\\d+):(\\d+))");String s = "2013-10-26 wei test 15:39";Matcher m = p.matcher(s);if(m.find()){System.out.println("m.group():"+m.group()); //2013-10-26 wei test 15:39System.out.println("m.group():"+m.group(0)); //2013-10-26 wei test 15:39System.out.println("m.group(1):"+m.group(1)); //2013-10-26System.out.println("m.group(2):"+m.group(2)); //2013System.out.println("m.group(3):"+m.group(3)); //10System.out.println("m.group(4):"+m.group(4)); //26System.out.println("m.group(5):"+m.group(5)); //weiSystem.out.println("m.group(6):"+m.group(6)); //testSystem.out.println("m.group(7):"+m.group(7)); //15:39System.out.println("m.group(8):"+m.group(8)); //15System.out.println("m.group(9):"+m.group(9)); //39}}
例四:
@Testpublic void test12(){Pattern p = Pattern.compile("((?:\\d+)-(\\d+)-(\\d+))\\s+([A-z]+)\\s+([A-z]+)\\s+((\\d+):(\\d+))");String s = "2013-10-26 wei test 15:39";Matcher m = p.matcher(s);if(m.find()){System.out.println(m.groupCount());//8System.out.println("m.group():"+m.group()); //2013-10-26 wei test 15:39System.out.println("m.group():"+m.group(0)); //2013-10-26 wei test 15:39System.out.println("m.group(1):"+m.group(1)); //2013-10-26System.out.println("m.group(2):"+m.group(2)); //10System.out.println("m.group(3):"+m.group(3)); //26System.out.println("m.group(4):"+m.group(4)); //weiSystem.out.println("m.group(5):"+m.group(5)); //testSystem.out.println("m.group(6):"+m.group(6)); //15:39System.out.println("m.group(7):"+m.group(7)); //15System.out.println("m.group(8):"+m.group(8)); //39}}
例五:
@Testpublic void test13(){Pattern p = Pattern.compile("(?:(?:\\d+)-(\\d+)-(\\d+))\\s+([A-z]+)\\s+([A-z]+)\\s+((\\d+):(\\d+))");String s = "2013-10-26 wei test 15:39";Matcher m = p.matcher(s);if(m.find()){System.out.println(m.groupCount());//7System.out.println("m.group():"+m.group()); //2013-10-26 wei test 15:39System.out.println("m.group():"+m.group(0)); //2013-10-26 wei test 15:39System.out.println("m.group(1):"+m.group(1)); //10System.out.println("m.group(2):"+m.group(2)); //26System.out.println("m.group(3):"+m.group(3)); //weiSystem.out.println("m.group(4):"+m.group(4)); //testSystem.out.println("m.group(5):"+m.group(5)); //15:39System.out.println("m.group(6):"+m.group(6)); //15System.out.println("m.group(7):"+m.group(7)); //39}}
- 关于java正则表达式非捕获型括号和捕获型括号的研究
- 正则表达式非捕获型括号和捕获型括号
- 关于正则表达式——捕获型括号和非捕获型括号
- [正则]正则表达式 捕获型括号和非捕获型括号
- 精通正则表达式三:非捕获型括号
- 正则表达式 捕获型数组和非捕获型数组的区别
- 正则表达式中的捕获和非捕获
- 正则表达式中的捕获和非捕获
- 复习下Java正则表达式的捕获组和非捕获组
- 精通正则表达式--正则表达式入门示例拓展(2)总结笔记重点捕获型括号、环视字符
- 正则表达式--非捕获
- JAVA正则表达式-捕获组与非捕获组
- JAVA正则表达式-捕获组与非捕获组
- JAVA正则表达式-捕获组与非捕获组
- JAVA正则表达式-捕获组与非捕获组
- JAVA正则表达式-捕获组与非捕获组
- 正则表达式中的捕获组和非捕获组
- java正则表达式 非捕获组详解
- 但救地球要紧的飞鸽传书
- 解决Android Studio更新错误 Solution to connection failure of updating in Android Studio
- 校园招聘最重要的有2点 第一个是不要抱死一家公司
- WPF图形之:Path详解
- 2013 CocoaChina开发者大会 资料
- 关于java正则表达式非捕获型括号和捕获型括号的研究
- cocos2d-X 节点(CCNode.h)API
- OCP-1Z0-053-V12.02-210题
- HeapEntry解码过程
- AndroidUI库 -SlidingMenu
- free store 和 heap
- matlab中冒号的用法
- LDD3源码学习日记<五>
- Java封装