今天用到正则表达式的懒惰匹配,由于开始不是很了解,所以一个问题纠结了一天,真正了解了就不难了。

例:一个字符串“abcdakdjd”

regex="a.*?d";    懒惰匹配

regex2="a.*d";   贪婪匹配

[java] view plaincopy
  1. public static void main(String[] args) {
  2. int count = 0;
  3. //Scanner sc = new Scanner(System.in);
  4. //String str = sc.next();
  5. String str = "abcdakdjd";
  6. String regex="a.*?d";
  7. Pattern p = Pattern.compile(regex);
  8. Matcher m = p.matcher(str);
  9. while (m.find()) {
  10. count++;
  11. System.out.println(m.group());
  12. }
  13. System.out.println("abcde在字符串"+str+"中出现的次数为"+count+"次");
  14. }

结果:

abcd
akd
abcde在字符串abcdakdjd中出现的次数为2次

这里是懒惰匹配,匹配到满足条件的abcd就停止了此次匹配,不会干扰后面的继续匹配。

当把regex="a.*?d" 换成regex="a.*d"

结果:

abcdakdjd
abcde在字符串abcdakdjd中出现的次数为1次

这里是贪婪匹配,顾名思义,很贪婪,要最大限度的占用字符串。

以上两种,一个是尽量匹配最短串,一个是要匹配最长串。

正则表达式的贪婪匹配与懒惰匹配相关推荐

  1. Python:利用原生函数count或正则表达式compile、findall、finditer实现匹配统计(包括模糊匹配的贪婪匹配、懒惰匹配)

    Python:利用原生函数count或正则表达式compile.findall.finditer实现匹配统计(包括模糊匹配的贪婪匹配.懒惰匹配) 目录 利用原生函数count或正则表达式compile ...

  2. 正则表达式中的贪婪匹配与懒惰匹配

    正则表达式中贪婪匹配与懒惰匹配的概念 贪婪匹配 匹配尽可能多的字符 当正则表达式中包含能接受重复的限定符时,默认会尽可能多的去匹配更多的字符,这种匹配模式叫做贪婪匹配 懒惰匹配 匹配尽可能少的字符 在 ...

  3. 正则表达式-贪婪匹配与懒惰匹配之获取短信验证码

    今天由于一个正则的关系,涉及到了贪婪匹配和懒惰匹配,因为对正则表达不是很懂,所以做个笔记 以下是获取验证码的方法 /*** 从短信内容中获取验证码* @param src* @param startM ...

  4. 正则表达式之贪婪匹配和懒惰匹配

    例子:匹配 HTML 标签 贪婪匹配: <.+> 懒惰匹配: <.+?> 我们发现第二种 懒惰匹配才是我们想要的结果 字符" ? " : 如果紧跟在任何量词 ...

  5. python非贪婪匹配_Python中关于正则表达式非贪婪以及多行匹配功能详解

    这篇文章主要介绍了Python正则表达式非贪婪.多行匹配功能,结合实例形式分析了Python正则表达式中非贪婪及多行匹配功能的实现方法与相关注意事项,需要的朋友可以参考下 本文实例讲述了Python正 ...

  6. python---正则表达式和关于贪婪匹配和懒惰匹配

    目录 作业实验 关于贪婪匹配和懒惰匹配 作业实验 关于re 尝试从以下网页数据中提取歌曲名称.作者.歌曲文件名? html = ''' 经典老歌         经典老歌列表     <ul i ...

  7. 正则表达式:贪婪模式与懒惰模式

    一 语法区别 贪婪模式与懒惰模式的语法区别在于重复限定修饰符的后面是否有问号,有的话就是懒惰模式,否则就是贪婪模式. 二 例子 他所说的应该是贪婪量词,是先吃尽所有字符,然后再一个一个地吐出来,直接匹 ...

  8. php正则表达式懒惰匹配,正则表达式-贪婪与懒惰

    当正则表达式中包含重复元字符比如"*"."+",都会匹配尽可能多的字符,如"a.*b",最长的以a开始,以b结束的字符串.如果用它来搜索aa ...

  9. PHP正则贪婪/懒惰匹配模式

    贪婪匹配 默认匹配尽可能多的字符.例如a.*b 如果用来搜索"aabab",它会匹配整个字符串"aabab" 懒惰匹配 .*? 能使整个匹配成功的前提下使用最少 ...

最新文章

  1. 图解 VS2015 如何打包winform 安装程序
  2. 单片机I/O口推挽输出与开漏输出的区别(open-drain与push-pull)
  3. Boost:等待和通知操作的模糊测试
  4. 添加tomcat7插件设置jdk编译版本
  5. asp.net core系列 67 Web压力测试工具WCAT
  6. jsx 调用php,JavaScript_JavaScript的React框架中的JSX语法学习入门教程,什么是JSX? 在用React写组件的 - phpStudy...
  7. [ Typescript 手册] JavaScript `Array` 在 Typescript 中的接口
  8. Win7 安装程序时报错 error 1935 HRESULT 0x80070422
  9. 前端开发【WEUI框架H5网页开发】—— WEUI+Node.js+fis3 项目开发
  10. QImage、QPainter绘图
  11. python之urlencode(),quote()及unquote()
  12. python体测成绩数据分析_Python+Excel数据分析实战:军事体能考核成绩评定(二)基本框架和年龄计算...
  13. 模板元编程(TMP)
  14. JVM 重点知识点总结
  15. Python用最简单的代码画出一箭穿心
  16. 不选主元的矩阵三角分解法
  17. 【GPS轨道精度】卫星轨道产品的精度及Bernese低轨卫星定轨模型
  18. 企业信息化投入中咨询服务_咨询服务企业如何实施项目核算信息化建设
  19. iframe子页面调用父页面javascript函数的方法
  20. B2B2C系统亮点是什么?如何助力珠宝首饰企业打造全渠道多商户商城管理体系

热门文章

  1. git命令-远程仓库拉取、本地仓库更新、工作空间提交等等
  2. Android集成一个新产品时,lunch的product name和device name注意事项
  3. java学习中,instanceof 关键字 和 final 关键字、值的传递(java 学习中的小记录)...
  4. 关于spring MVC机制,示例解读
  5. 使用Windows 8 的“任务计划”令HydraVision更加精彩
  6. Windows C++ 获取当前文件夹下有几个文件
  7. 解析HttpURLConnection与代理服务器
  8. PHP源代码后门事件后续:用户数据库遭泄露或是元凶
  9. 看我如何发现开源 WAF引擎ModSecurity 中的DoS 漏洞
  10. C语言利用栈计算算式(表达式)