package test1;

 import java.util.regex.Matcher;
import java.util.regex.Pattern; public class TestExp {
/**
*
* 在使用正则表达式的时候,我们经常会使用()把某个部分括起来,称为一个子模式。 子模式有Capturing和Non-Capturing两种情况。
* Capturing指获取匹配 :
* 是指系统会在幕后将所有的子模式匹配结果保存起来,供我们查找或者替换。如后向引用(在表达式的后面应用前面匹配的子字符串)的使用;
* Non-Capturing指非获取匹配 :
* 这时系统并不会保存子模式的匹配结果,子模式的匹配更多的只是作为一种限制条件使用,如正向预查,反向预查,负正向预查,负反向预查等。
*
* 在Java中可以使用非获取匹配作为筛选子字符串的条件。例如 想获得“hello world !”中的“hello world ”
* ,注意,不要感叹号。 就可以再匹配感叹号时使用非获取的正则表达式。("hello world (?=!)")
*
* Java中后向引用的使用:
* "abc def".replaceFirst("(\\w+)\\s+(\\w+)", "$2 $1"); //结果为def abc
* "abc def aaa bbb".replaceAll("(\\w+)\\s+(\\w+)", "$2 $1"); //结果是 def abc bbb aaa
*
* 使用$x替换字符中子字符串。
*
* */
public static void main(String[] args) {
/** groupcount 的下标是从0开始的,也就是说如果获取一个匹配项,那么该值为0 */
/** 正向肯定预查 */
/**
* 目的: 查找元字符中符合“win ”格式的子字符串,而且该字符串后面紧跟一个“7”字符串。
*
* */
/*
* Pattern ptn = Pattern.compile("win (?=7)",Pattern.UNICODE_CASE) ;
* Matcher m = ptn.matcher("win 7") ; System.out.println("groupcount: "
* + m.groupCount()); while(m.find()){ System.out.println(m.group()); }
*/
/** 正向否定预查 */
/**
* 目的: 查找元字符中符合“win ”格式的子字符串,而且该字符串后面没有跟一个“7”字符串。
*
* */
/*
* Pattern ptn = Pattern.compile("win (?!7)",Pattern.UNICODE_CASE) ;
* Matcher m = ptn.matcher("win 8") ; while(m.find()){
* System.out.println(m.group()); }
*/
/** 反向肯定预查 */
/**
* 目的:查找元字符串中符合“win”的子字符串,而且在该字符串前面还跟着“7”字符串。 获取的是win,因为7是非获取的。
*
* */
/*
* Pattern ptn = Pattern.compile("(?<=7)win",Pattern.UNICODE_CASE) ;
* Matcher m = ptn.matcher("7win") ; while(m.find()){
* System.out.println(m.group()); }
*/
/** 反向否定预查 */
/**
* 目的:查找元字符串中符合“win”的子字符串,而且在该字符串前面不跟“7”字符串。
*
*/
/*
* Pattern ptn = Pattern.compile("(?<!7)win",Pattern.UNICODE_CASE) ;
* Matcher m = ptn.matcher("8win") ; while(m.find()){
* System.out.println(m.group()); }
*/
}
}

java 正则表达式获取匹配和非获取匹配的更多相关文章

  1. Delphi 正则表达式语法(6): 贪婪匹配与非贪婪匹配

    Delphi 正则表达式语法(6): 贪婪匹配与非贪婪匹配 //贪婪匹配 var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil);   ...

  2. php正则贪婪匹配与非贪婪匹配一些例子

    http://www.111cn.net/phper/210/55600.htm 贪婪模式匹配的原则是: 在可匹配也可不匹配的情况下, 优先匹配,直到不能匹配成功的情况下,记录备选状态,并把匹配控制交 ...

  3. shell 中 贪婪匹配 和 非贪婪匹配

    举个栗子: v=jfedu.shiyiwen.com echo ${v%.*} 一个%为非贪婪匹配,即匹配最短结果.%从右到左进行非贪婪匹配,匹配什么呢? 匹配已 .*的字符. 那么当然是匹配到了.c ...

  4. PHP正则 贪婪匹配与非贪婪匹配

    $str = ".abcdeabcde"; preg_match('/a.+?e/', $str, $match); print_r($match); Array ( [0] =& ...

  5. re 正则匹配的非贪婪匹配

    非贪婪匹配 将尽可能少的匹配内容,当?出现在其他的重复次数后面时会将贪婪模式改为非贪婪模式. ? 如 abc.*? abc.+? 非贪婪匹配:尽可能少的匹配{n,}?{,n}?{n,m}?*? # * ...

  6. Python 正则表达式 贪心匹配和非贪心匹配

    Python的正则表达式默认是“贪心匹配”,即在有第二义的情况下,尽可能匹配最长的字符串,在正则表达式的花括号后面跟上问号,可以变为非贪心模式 >>> >>> ha ...

  7. java 正则表达式-忽略大小写与多行匹配

    Pattern.compile("'.*?'", Pattern.CASE_INSENSITIVE | Pattern.DOTALL);

  8. JAVA正则表达式-捕获组与非捕获组

    Java捕获组与非捕获组的问题 先看例子: import java.util.regex.Matcher; import java.util.regex.Pattern; public class P ...

  9. 廖雪峰Java9正则表达式-2正则表达式进阶-5非贪婪匹配

    1.贪婪匹配 问题:给定一个字符串表示的数字,判断该数字末尾0的个数? "123000": 3个0 "10100": 2个0 "1001": ...

随机推荐

  1. JQuery学习之操作CSS

    样式表: .important{ font-weight:bold; font-size:xx-large; } .blue{ color:blue; } 1.addClass():向被选元素添加一个 ...

  2. DSP using MATLAB 随书示例Example2.8

    x = [3, 11, 7, 0, -1, 4, 2]; nx = [-3:3]; h = [2, 3, 0, -5, 2, 1]; nh = [-1:4]; [y,ny] = conv_m(x,nx ...

  3. no-jquery 02 DOM

    DOM Manipulation Creating Elements // IE 5.5+ document.createElement('div'); Inserting Elements Befo ...

  4. Linux 环境中普通用户启动Myeclipse出错

    将Myeclipse安装在/usr/local/myeclipse目录中,由root用户启动时没有问题,而用普通用户时出现如下故障: The configuration area at '/usr/l ...

  5. Temp文件夹缺少network service权限,webservice能访问,但是不能调用

    给C:\WINDOWS\temp文件夹添加NETWORK SERVICE权限即可

  6. XIII Open Cup named after E.V. Pankratiev. GP of Saratov

    A. Box Game 注意到局面总数不超过$50000$,而且每次操作都会改变石子的奇偶性,因此按奇偶可以将状态建成二分图,然后求出最大匹配. 如果状态数是偶数,那么先手必胜,策略就是每次走匹配边, ...

  7. ubifs性能优化分析

    本文通过分析ubifs的mount.read.write和commit流程,挖掘ubifs背后的设计决策和性能优化手段,并结合自身产品的特点,给出一些读写性能改进方案.   1.     ubifs  ...

  8. 【BZOJ2223/3524】[Coci 2009]PATULJCI

    Description Input   Output 10 3 1 2 1 2 1 2 3 2 3 3 8 1 2 1 3 1 4 1 5 2 5 2 6 6 9 7 10 Sample Input ...

  9. dynamic 是什么

    dynamic是c# 4.0新增的类型,可以修饰类,对象,属性,索引器,方法返回值等. class ExampleClass { // A dynamic field. static dynamic ...

  10. vs2013单元测试第二部分

    上次的随笔说还没弄懂,现在已经弄懂,就让我说说我的方法吧. 1.点击文件——>新建——>项目——>c#——>控制台应用程序,确定,之后如图所示 2.在一定位置写上要进行单元检测 ...