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. jade学习01

    编写 简单例子 doctype html html head title learn jade body h1 learn jade 常用命令 编译: jade index.jade //默认编译成压 ...

  2. PHP 传值和传引用、传地址的区别

    传值,   是把实参的值赋值给行参   那么对行参的修改,不会影响实参的值   传地址   是传值的一种特殊方式,只是他传递的是地址,不是普通的如int   那么传地址以后,实参和行参都指向同一个对象 ...

  3. DZY Loves Sequences

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...

  4. hdu 5269 ZYB loves Xor I

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission( ...

  5. 【Clr in c#】方法

    1. 引用类型(class)与值类型(strust)的构造函数(实例构造器) 1,  创建一个引用类型的实例时,首先为实例的数据字段分配内存,然后初始对象的附加字段,最后调用实例构造器来设置对象的初始 ...

  6. js获取一个对象的所以属性和值

    在HTML DOM中,获取某个元素对象的时候,往往记不住它的很多属性,可以通过下面的例子来查找一下: <!DOCTYPE html> <html> <body> & ...

  7. nav元素

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. ios 关于[xxx timeIntervalSinceNow]出现EXC_BAD_ACCESS错误的解决办法

    [xxx timeIntervalSinceNow]出现EXC_BAD_ACCESS错误的主要原因是之前的[NSDate date]返回一个autoreleased的NSdata,其被释放掉 解决方法 ...

  9. Codeforces Round #215 (Div. 2) C. Sereja and Algorithm

    #include <iostream> #include <vector> #include <algorithm> #include <string> ...

  10. NPOI读取excel功能,兼容xls和xlsx

    样例: IWorkbook workbook; string fileExt = Path.GetExtension(filePath); try { using (var file = new Fi ...