非捕获组:格式:(?:xxxx), 如:(?:aaa)\\w+(bbb)\\1,\\1 代表重复捕获的第一组即是(bbb)

public static void main(String[] args)
{
String str = "fooccccbarbarbarfo";
Pattern p = Pattern.compile("(?:foo)\\w+(bar)\\1\\1");
Matcher m =p.matcher(str);
if (m.find())
{
System.out.println(m.group());
System.out.println(m.group(1));
}
}

输出:

fooccccbarbarbar
bar

捕获组:格式:(xxx), 如:(aaa)\\w+(bbb)\\1,\\1 代表重复捕获的第一组即是(aaa) ,\\2代表(bbb)

public static void main(String[] args)
{
String str = "fooccccbarbarbarfo";
Pattern p = Pattern.compile("(foo)\\w+(bar)\\2\\2");
Matcher m =p.matcher(str);
if (m.find())
{
System.out.println(m.group());
System.out.println(m.group(1));
}
}

输出:

fooccccbarbarbar
foo

贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配。非贪婪模式只被部分NFA引擎所支持。 

属于贪婪模式的量词,也叫做匹配优先量词,包括: 

“{m,n}”、“{m,}”、“?”、“*”和“+”。 

在一些使用NFA引擎的语言中,在匹配优先量词后加上“?”,即变成属于非贪婪模式的量词,也叫做忽略优先量词,包括: 

“{m,n}?”、“{m,}?”、“??”、“*?”和“+?”。 

从正则语法的角度来讲,被匹配优先量词修饰的子表达式使用的就是贪婪模式,如“(Expression)+”;被忽略优先量词修饰的子表达式使用的就是非贪婪模式,如“(Expression)+?”。 

对于贪婪模式,各种文档的叫法基本一致,但是对于非贪婪模式,有的叫懒惰模式或惰性模式,有的叫勉强模式,其实叫什么无所谓,只要掌握原理和用法,能够运用自如也就是了。个人习惯使用贪婪与非贪婪的叫法,所以文中都会使用这种叫法进行介绍。

最新文章

  1. SQL 基础语法(一)
  2. DNS相关知识
  3. php mysql支持emoji表情方案
  4. JAVA刷CSDN博客流量的思路
  5. Web服务器禁止range请求
  6. Android手势锁实现
  7. 在HCI层ACL Connection的建立
  8. Python核心编程-细节
  9. c# 范型Dictionary实用例子
  10. nodejs 安装 postgresql module
  11. github进行修改
  12. JAVA多线程之CountDownLatch
  13. 子数组的最大异或和---Trie
  14. 学习Acegi应用到实际项目中(4)
  15. rhel7.0解决:This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
  16. 如何防止XSRF攻击
  17. sbt编译spark程序提示value toDF is not a member of Seq()
  18. Sql Server Snapshot和mysql MVCC
  19. 初学nodejs之安装Express中遇到的问题: error: option `-v, --view <engine>' argument missing
  20. date format 参数表

热门文章

  1. 13、java——常用类
  2. SLAM的数学基础(4):先验概率、后验概率、贝叶斯准则
  3. SLAM的数学基础(1):什么是方差,有什么意义?
  4. xshell工具使用
  5. springMVC-8-jackson使用
  6. 微信小程序云开发-云存储-上传文件(图片/视频)到云存储 精简代码
  7. Cannot read property 'data' of undefined —— 小程序开发
  8. 【Lucas组合数定理】组合-FZU 2020
  9. 浅析VO、DTO、DO、PO的概念、区别和用处(八)
  10. 在屏幕上搜索图片并返回图片所在位置的坐标的AutoHotkey脚本源代码(类似大漠插件)