正则表达式贪婪与非贪婪模式

之前做程序的时候看到过正则表达式的贪婪与非贪婪模式,今天用的时候就想不起来了,现在这里总结一下,以备自己以后用到注意。

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

  如:String str="abcaxc";

    Patter p="ab.*c";

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

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

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

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

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

     *:任意多个

     +:一个到多个

     ?:0或一个

3.程序实例

使用Snort的规则一条规则的一部分作为匹配文本,匹配出其中的content部分。

 1 import java.util.regex.Matcher;2 import java.util.regex.Pattern;3 4 public class RegularTest {5     6     public static void main(String[] arg){7         String text="(content:\"rcpt to root\";pcre:\"word\";)";8         String rule1="content:\".+\"";    //贪婪模式9         String rule2="content:\".+?\"";    //非贪婪模式
10
11         System.out.println("文本:"+text);
12         System.out.println("贪婪模式:"+rule1);
13         Pattern p1 =Pattern.compile(rule1);
14         Matcher m1 = p1.matcher(text);
15         while(m1.find()){
16             System.out.println("匹配结果:"+m1.group(0));
17         }
18
19         System.out.println("非贪婪模式:"+rule2);
20         Pattern p2 =Pattern.compile(rule2);
21         Matcher m2 = p2.matcher(text);
22         while(m2.find()){
23             System.out.println("匹配结果:"+m2.group(0));
24         }
25     }
26 }

执行结果:

正则表达式贪婪与非贪婪模式相关推荐

  1. 正则表达式之 贪婪与非贪婪模式详解

    1 概述 贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配.非贪婪模式只被部分NF ...

  2. 转:正则表达式之 贪婪与非贪婪模式详解

    1 概述 贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配.非贪婪模式只被部分NF ...

  3. 关于正则表达式的贪婪与非贪婪模式 - A JavaScript Fancier - IT博客网

    以前看正则表达式,但没有注意到正则表达式的贪婪与非贪婪模式,今天在经典上看到了这么段代码: <script> try{ str=" abcdefg abcdefghijkl &q ...

  4. 94. 正则表达式贪婪与非贪婪模式的区别?

    正则表达式,爬虫地时候用的比较多吧,暂时还没有接触过写爬虫地代码,先放下 写好正则表达式也是个不容易的事啊 1.什么是正则表达式的贪婪与非贪婪匹配 如:String str="abcaxc& ...

  5. java正则表达式非贪婪_正则表达式贪婪与非贪婪模式(示例代码)

    之前做程序的时候看到过正则表达式的贪婪与非贪婪模式,今天用的时候就想不起来了,现在这里总结一下,以备自己以后用到注意. 1.什么是正则表达式的贪婪与非贪婪匹配 如:String str="a ...

  6. 正则表达式(四)——贪婪与非贪婪模式

    高级用法在这里:正则表达式(三)--高级用法:search,findall,sub,split 8.贪婪与非贪婪模式 首先我们以简单的例子来说说什么是正则表达式的贪婪与非贪婪匹配? 比如假定匹配字符串 ...

  7. 正则表达式的贪婪和非贪婪模式

    最近在写程序时,碰到一个场景,需要找到一个字符串中指定的一个片段,而不是所有片段,这就涉及到正则表达式中贪婪和非贪婪两种模式. 字面意思上,正则表达式一般趋向于最大长度匹配,就是贪婪模式.匹配到结果就 ...

  8. 正则表达式口诀及常用正则 。正则贪婪与非贪婪模式

    正则表达式口诀及常用正则 签于网上太多的介绍都是一篇凶悍的短文,边看边理解可以,帮助记忆不行.又受五笔字型字根表口诀"白手看头三二斤..."的启发,  试作"正则表达式助 ...

  9. java正则表达式非贪婪_正则表达式中的贪婪与非贪婪匹配模式

    1.首先看看下面的例子: try{ str=" abcdefg abcdefghijkl "; re1=str.match(/ [\W\w]+?/ig); alert(" ...

最新文章

  1. 【每日一算法】最长公共前缀
  2. 软考高项之质量管理-攻坚记忆
  3. Windows Sockets错误标识及对应解释
  4. Maven集成指令总结
  5. 网络工程:3.1 RIP(Routing Information Protocol)协议
  6. 手机技巧:手机用一段时间就发烫,如何解决?
  7. js 实现文件导出、文件下载
  8. 观众喜欢,就有人说大陆人吃不起榨菜
  9. stringbuffer java API_java API中Object,String,Stringbuffer,StringBuilder的总结
  10. dw向右滚动字幕HTML,DW滚动文字代码肿么添加?
  11. 今日头条数据分析师分享有感
  12. 火狐,Firefox浏览器怎么设置主页
  13. Windows Server 中 DNS 服务器的新增功能
  14. 《Android》Chap.11 网络技术
  15. 派大星如期反馈小程序的生命周期
  16. 结构体内存对齐,默认对齐数,结构体传参
  17. 2021年图灵奖简介
  18. 计算机类专业入门知识
  19. TIOBE 2 月编程语言榜:C++ 势不可挡
  20. 计算机研究生英语ppt,计算机硕士论文答辩ppt

热门文章

  1. linux 编译src.rpm,CentOS6.5下编译src.rpm包的内核
  2. 移动流量转赠给好友_私域流量的五大认知误区
  3. 牛顿法, Jacobian矩阵 和 Hessian矩阵
  4. linux 跟踪内存,用strace跟踪malloc内存分配
  5. 哈罗单车怎么关锁还车_记者体验临沂共享单车定点还车 停错地方关不上锁
  6. 【RS码1】系统RS码编码原理及MATLAB实现(不使用MATLAB库函数)
  7. 第十二届蓝桥杯Java省赛A组试题:异或数列
  8. NOIP模拟测试19「count·dinner·chess」
  9. Sublime Text插件列表
  10. 一个select元素自定义设计的新思路:appearance: none之后利用符号制造小箭头