java 正则表达式获取匹配和非获取匹配
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 正则表达式获取匹配和非获取匹配的更多相关文章
- Delphi 正则表达式语法(6): 贪婪匹配与非贪婪匹配
Delphi 正则表达式语法(6): 贪婪匹配与非贪婪匹配 //贪婪匹配 var reg: TPerlRegEx; begin reg := TPerlRegEx.Create(nil); ...
- php正则贪婪匹配与非贪婪匹配一些例子
http://www.111cn.net/phper/210/55600.htm 贪婪模式匹配的原则是: 在可匹配也可不匹配的情况下, 优先匹配,直到不能匹配成功的情况下,记录备选状态,并把匹配控制交 ...
- shell 中 贪婪匹配 和 非贪婪匹配
举个栗子: v=jfedu.shiyiwen.com echo ${v%.*} 一个%为非贪婪匹配,即匹配最短结果.%从右到左进行非贪婪匹配,匹配什么呢? 匹配已 .*的字符. 那么当然是匹配到了.c ...
- PHP正则 贪婪匹配与非贪婪匹配
$str = ".abcdeabcde"; preg_match('/a.+?e/', $str, $match); print_r($match); Array ( [0] =& ...
- re 正则匹配的非贪婪匹配
非贪婪匹配 将尽可能少的匹配内容,当?出现在其他的重复次数后面时会将贪婪模式改为非贪婪模式. ? 如 abc.*? abc.+? 非贪婪匹配:尽可能少的匹配{n,}?{,n}?{n,m}?*? # * ...
- Python 正则表达式 贪心匹配和非贪心匹配
Python的正则表达式默认是“贪心匹配”,即在有第二义的情况下,尽可能匹配最长的字符串,在正则表达式的花括号后面跟上问号,可以变为非贪心模式 >>> >>> ha ...
- java 正则表达式-忽略大小写与多行匹配
Pattern.compile("'.*?'", Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
- JAVA正则表达式-捕获组与非捕获组
Java捕获组与非捕获组的问题 先看例子: import java.util.regex.Matcher; import java.util.regex.Pattern; public class P ...
- 廖雪峰Java9正则表达式-2正则表达式进阶-5非贪婪匹配
1.贪婪匹配 问题:给定一个字符串表示的数字,判断该数字末尾0的个数? "123000": 3个0 "10100": 2个0 "1001": ...
随机推荐
- ASP.NET MVC5 网站开发实践(一) - 项目框架(转)
前几天算是开题了,关于怎么做自己想了很多,但毕竟没做过项目既不知道这些想法有无必要,也不知道能不能实现,不过邓爷爷说过“摸着石头过河”吧.这段时间看了一些博主的文章收获很大,特别是@kencery,依 ...
- CSS的clip-path
在Web网页中主要是以矩形分布的.而平面媒体则倾向于更多不同的形状.造成这种差异的原因是因为缺少合适的工具去实现我们平面媒体中的内容.这也就造成了很多设计师的创意发挥,就算是有创意,前端实现也将付出巨 ...
- WordPress用户注册无法发送密码邮件怎么回事?
wordpress无法发送电子邮件.可能原因:您的主机禁用了 mail() 函数 等等几句话.在网上一搜,很快找到了解决方案:使用wp-mail-smtp插件. 一.插件下载安装.可以在wordpre ...
- java基础-变量
浏览以下内容前,请点击并阅读 声明 java中的变量分为四种: 实例变量(非静态字段):一个java类中没有static关键词修饰的字段 类变量(静态字段):一个java类中带有static关键词修饰 ...
- 代码审查工具StyleCop
“代码审查”或是“代码评审”(Code Review),这是一个流程,当开发人员写好代码后,需要让别人来review一下他的代码,这是一种有效发现BUG的方法.由此,我们可以审查代码的风格.逻辑.思路 ...
- Modify a Stored Procedure using SQL Server Management Studio
In Object Explorer, connect to an instance of Database Engine and then expand that instance. Expand ...
- JStorm之Nimbus简介
本文导读: ——JStorm之Nimbus简介 .简介 .系统框架与原理 .实现逻辑和代码剖析 )Nimbus启动 )Topology提交 )任务调度 )任务监控 .结束语 .参考文献 附:JStor ...
- 纯CSS打造银色MacBook Air(完整版)
上一篇:<selection伪元素小解> ::selection{ background:blue; color:red; }p{font-size:14px;} 作者主页:myvin 博 ...
- topcoder SRM 625 DIV2 IncrementingSequence
由于题目数据量比较小,故可以开辟一个数组存储每个index出现的次数 然后遍历即可 string canItBeDone(int k, vector<int> A){ vector< ...
- Codeforces Round #195 (Div. 2) A. Vasily the Bear and Triangle
水题,注意数据范围即可 #include <iostream> #include <algorithm> #include <utility> using name ...