1.什么是正则表达式的贪婪与非贪婪匹配

如:String str="abcaxc";

Patter p="ab*c";

贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab*c)。

非贪婪匹配:就是匹配到结果就好,就少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab*c)。

2.编程中如何区分两种模式

默认是贪婪模式;在量词后面直接加上一个问号?就是非贪婪模式。

量词:{m,n}:m到n个

*:任意多个

+:一个到多个

?:0或一个

demoimport java.util.regex.Matcher;

import java.util.regex.Pattern;

public class RegularTest {

public static void main(String[] arg){

String text="(content:\"rcpt to root\";pcre:\"word\";)";

String rule1="content:\".+\"";    //贪婪模式

String rule2="content:\".+?\"";    //非贪婪模式

System.out.println("文本:"+text);

System.out.println("贪婪模式:"+rule1);

Pattern p1 =Pattern.compile(rule1);

Matcher m1 = p1.matcher(text);

while(m1.find()){

System.out.println("匹配结果:"+m1.group(0));

}

System.out.println("非贪婪模式:"+rule2);

Pattern p2 =Pattern.compile(rule2);

Matcher m2 = p2.matcher(text);

while(m2.find()){

System.out.println("匹配结果:"+m2.group(0));

}

}

}

贪婪匹配:在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配string pattern1 = @"a.*c";   // greedy match Regex regex = new Regex(pattern1);

regex.Match("abcabc"); // return "abcabc"

非贪婪匹配:在满足匹配时,匹配尽可能短的字符串,使用?来表示非贪婪匹配string pattern1 = @"a.*?c";   // non-greedy match Regex regex = new Regex(pattern1);

regex.Match("abcabc"); // return "abc"

几个常用的非贪婪匹配Pattern*? 重复任意次,但尽可能少重复

+? 重复1次或更多次,但尽可能少重复

?? 重复0次或1次,但尽可能少重复

{n,m}? 重复n到m次,但尽可能少重复

{n,}? 重复n次以上,但尽可能少重复

参考文章:

python贪婪匹配和非贪婪匹配_贪婪匹配和非贪婪匹配相关推荐

  1. 正则匹配不包含某字符串_如何替换JS字符串中匹配到多处中某一指定节点?

    来源 | https://www.cnblogs.com/class1/p/14273231.html 问题先行,要求搜索关键字,匹配到四处,那我鼠标放在第二处,我想把它变个颜色,该怎么实现呢?截图如 ...

  2. mysql创建非聚集索引_聚集索引和非聚集索引的区别

    作者:riemann riemann.blog.csdn.net/article/details/90324846 一.深入浅出理解索引结构 实际上,可以把索引理解为一种特殊的目录.微软的SQL SE ...

  3. java静态方法调用非静态变量_[java]静态方法访问非静态方法的方法

    是不是是有点拗口哈,在刚开始的开发中,经常会碰到"无法访问非静态方法",如下: Test.java public Test{ public void notStatic(){ Sy ...

  4. python基础(十二):正则、re模块、贪婪和非贪婪

    正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件的子串等. 元字符:在 ...

  5. python正则匹配找到所有的浮点数_如何利用Python抓取静态网站及其内部资源

    遇到的需求 前段时间需要快速做个静态展示页面,要求是响应式和较美观.由于时间较短,自己动手写的话也有点麻烦,所以就打算上网找现成的. 中途找到了几个页面发现不错,然后就开始思考怎么把页面给下载下来. ...

  6. java 正则表达式 非贪婪模式_详解正则表达式的贪婪模式与非贪婪模式

    什么是正则表达式的贪婪与非贪婪匹配 如:String str="abcaxc"; Patter p="ab*c"; 贪婪匹配:正则表达式一般趋向于最大长度匹配, ...

  7. python正则匹配字母后面四位数字_怎么写一条正则去匹配15位、18位、还有最后一个字符为字母的身份证号...

    大佬们,我想用一条正则表达式在一堆字符串里面去匹配匹配15位.18位.还有最后一个字符为字母的身份证号.那一堆字符串如下: |_ Potentially risky methods: TRACE |_ ...

  8. python处理wps表格数据匹配_两个excel表格数据匹配wps-WPS怎样用VLOOKUP引用另一个表格的数据...

    wps精确匹配,把一个wps表格里面的数据匹配到另一... 材料/工具:wps2016 1.打开匹配个表格,表1和表2. 2.在需要放匹配值的格中输入=vl,就会自动提示vlookup函 3.双击选择 ...

  9. python识别几何图形拼成的图案_自动驾驶汽车视觉- 图像特征提取与匹配技术

    Feature detection and matching Email: williamhyin@outlook.com 特征提取和匹配是许多计算机视觉应用中的一个重要任务,广泛运用在运动结构.图像 ...

  10. java 正则匹配括号是否成对_十分钟学会正则表达式

    正则表达式用处挺广的,主要用于处理字符串. 正则引擎 想要在计算机语言中使用正则表达式,那么这门计算机语言必须要利用正则引擎去实现相应的正则库.主要的正则引擎分为以下两类: DFA 确定性的状态机.不 ...

最新文章

  1. Yahoo!团队实践分享:网站性能优化的34条黄金守则
  2. 查看.net frameword版本
  3. JavaScript解析顺序和变量作用域
  4. camunda 流程执行追踪_九思OA项目管理解决方案:规范企业项目流程,掌握项目进展...
  5. 抽象方法《Thinking in Java》随笔014
  6. Linux基础-查看文件与目录
  7. oracle 中增加行,Oracle中实现FORM表单插入、锁定、更新行、删除行的包
  8. cad直线和圆弧倒角不相切_曲线操作-直线,圆弧,圆,倒斜角
  9. python 怎么处理json_Python是怎样处理json模块的
  10. bash 函数内部变量_使用源命令将函数和变量导入Bash
  11. R-CNN,Fast R-CNN,Faster R-CNN原理及执行与训练的实例+实现自己的目标检测(转)
  12. CFS任务的负载均衡(框架篇)
  13. 在web of science / 知网 上生成题录
  14. CSS3中的元素过渡属性transition
  15. kali无线安全分析工具
  16. Cookie被禁用,如何传递session id?
  17. 日消息量突破 50 亿,谈小米的高可用推送系统设计
  18. 运营必知的数据运营精髓
  19. 魔兽DOTA高玩的自述
  20. 凸优化学习(二)——凸集

热门文章

  1. 微软回顾3项安全计划成果 有效降低******
  2. 《星际争霸 / StarCraft 》超经典游戏!
  3. commons-lang包中我们常用的类的作用
  4. ajax框架dwr开发
  5. svn 提交到远程仓库_聊聊如何从SVN迁移源码到Git仓库
  6. -bash : xxx : command not found 新安装Linux后,安装一些必须软件(持续更新……)
  7. Ice-3.5.1在CentOS 6.5系统中的编译配置教程
  8. Laravel 队列:如何查看队列报错信息
  9. MySQL中空字符串与null的区别:计数 判断 时间
  10. delphi中,idftp怎样查找ftp服务器的是否存在一个文件,delphi – IDFTP DirExists和MakeDir...