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. CSS3详解:background

    CSS3对于background做了一些修改,最明显的一个就是采用设置多背景,不但添加了4个新属性,并且还对目前的属性进行了调整增强. 1.多个背景图片 在css3里面,你可以再一个标签元素里应用多个 ...

  2. 浩瀚技术 安卓版移动开单手持微POS PDA无线移动开单软件 -安卓版移动手持开单设备

    PDA数据采集器,是深圳浩瀚技术有限公司最新研发的一款安卓版移动手持开单设备,它通过WIFI和GPRS连接并访问电脑,从进销存软件中读取数据,实现移动开单,打破电脑开单模式. 它自带扫描器,可直接扫描 ...

  3. 数据库的SQL语句创建和主外键删除操作

    create table UserType ( Id ,), Name nvarchar() not null ) go create table UserInfo ( Id ,), LoginPwd ...

  4. Java学习——开端

    学号 <Java程序设计>第1周学习总结(1) 教材学习内容总结(第一章) Java最早是由Sun公司研发,原称Oak(橡树),开发者之一的James Gosling被尊称为Java之父. ...

  5. 用脚本完成mysql工作

    1. 用mysql -e在脚本中执行mysql的sql语句 #!/bin/bash #simple mysql shell usage logtime=`date "+%Y-%m-%d&qu ...

  6. unity awake start 的区别

    void Awake (){ } //初始化函数,在游戏开始时系统自动调用.一般用来创建变量之类的东西. void Start(){ } //初始化函数,在所有Awake函数运行完之后(一般是这样,但 ...

  7. BZOJ4384 : [POI2015]Trzy wieże

    首先只有一种字符的情况可以通过双指针在$O(n)$的时间内处理完毕. 设$cnt[i][j]$表示前$i$个字符中$j$字符出现的次数,那么对于两个位置$j<i$: 如果 $cnt[i][0]- ...

  8. codeforces round #234B(DIV2) B Inna and New Matrix of Candies

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

  9. 旋转轮子 UIActivityIndicatorView

    旋转轮子 *activityView = [[UIActivityIndicatorView alloc ]initWithActivityIndicatorStyle:UIActivityIndic ...

  10. CentOS评估磁盘I/O性能读写极限测试

    用一个fio工具 安装 yum -y install fio 二,FIO用法: 随机读:fio  -direct=1 -iodepth 1 -thread -rw=randread -ioengine ...