python贪婪匹配和非贪婪匹配_贪婪匹配和非贪婪匹配
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贪婪匹配和非贪婪匹配_贪婪匹配和非贪婪匹配相关推荐
- 正则匹配不包含某字符串_如何替换JS字符串中匹配到多处中某一指定节点?
来源 | https://www.cnblogs.com/class1/p/14273231.html 问题先行,要求搜索关键字,匹配到四处,那我鼠标放在第二处,我想把它变个颜色,该怎么实现呢?截图如 ...
- mysql创建非聚集索引_聚集索引和非聚集索引的区别
作者:riemann riemann.blog.csdn.net/article/details/90324846 一.深入浅出理解索引结构 实际上,可以把索引理解为一种特殊的目录.微软的SQL SE ...
- java静态方法调用非静态变量_[java]静态方法访问非静态方法的方法
是不是是有点拗口哈,在刚开始的开发中,经常会碰到"无法访问非静态方法",如下: Test.java public Test{ public void notStatic(){ Sy ...
- python基础(十二):正则、re模块、贪婪和非贪婪
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件的子串等. 元字符:在 ...
- python正则匹配找到所有的浮点数_如何利用Python抓取静态网站及其内部资源
遇到的需求 前段时间需要快速做个静态展示页面,要求是响应式和较美观.由于时间较短,自己动手写的话也有点麻烦,所以就打算上网找现成的. 中途找到了几个页面发现不错,然后就开始思考怎么把页面给下载下来. ...
- java 正则表达式 非贪婪模式_详解正则表达式的贪婪模式与非贪婪模式
什么是正则表达式的贪婪与非贪婪匹配 如:String str="abcaxc"; Patter p="ab*c"; 贪婪匹配:正则表达式一般趋向于最大长度匹配, ...
- python正则匹配字母后面四位数字_怎么写一条正则去匹配15位、18位、还有最后一个字符为字母的身份证号...
大佬们,我想用一条正则表达式在一堆字符串里面去匹配匹配15位.18位.还有最后一个字符为字母的身份证号.那一堆字符串如下: |_ Potentially risky methods: TRACE |_ ...
- python处理wps表格数据匹配_两个excel表格数据匹配wps-WPS怎样用VLOOKUP引用另一个表格的数据...
wps精确匹配,把一个wps表格里面的数据匹配到另一... 材料/工具:wps2016 1.打开匹配个表格,表1和表2. 2.在需要放匹配值的格中输入=vl,就会自动提示vlookup函 3.双击选择 ...
- python识别几何图形拼成的图案_自动驾驶汽车视觉- 图像特征提取与匹配技术
Feature detection and matching Email: williamhyin@outlook.com 特征提取和匹配是许多计算机视觉应用中的一个重要任务,广泛运用在运动结构.图像 ...
- java 正则匹配括号是否成对_十分钟学会正则表达式
正则表达式用处挺广的,主要用于处理字符串. 正则引擎 想要在计算机语言中使用正则表达式,那么这门计算机语言必须要利用正则引擎去实现相应的正则库.主要的正则引擎分为以下两类: DFA 确定性的状态机.不 ...
最新文章
- Yahoo!团队实践分享:网站性能优化的34条黄金守则
- 查看.net frameword版本
- JavaScript解析顺序和变量作用域
- camunda 流程执行追踪_九思OA项目管理解决方案:规范企业项目流程,掌握项目进展...
- 抽象方法《Thinking in Java》随笔014
- Linux基础-查看文件与目录
- oracle 中增加行,Oracle中实现FORM表单插入、锁定、更新行、删除行的包
- cad直线和圆弧倒角不相切_曲线操作-直线,圆弧,圆,倒斜角
- python 怎么处理json_Python是怎样处理json模块的
- bash 函数内部变量_使用源命令将函数和变量导入Bash
- R-CNN,Fast R-CNN,Faster R-CNN原理及执行与训练的实例+实现自己的目标检测(转)
- CFS任务的负载均衡(框架篇)
- 在web of science / 知网 上生成题录
- CSS3中的元素过渡属性transition
- kali无线安全分析工具
- Cookie被禁用,如何传递session id?
- 日消息量突破 50 亿,谈小米的高可用推送系统设计
- 运营必知的数据运营精髓
- 魔兽DOTA高玩的自述
- 凸优化学习(二)——凸集
热门文章
- 微软回顾3项安全计划成果 有效降低******
- 《星际争霸 / StarCraft 》超经典游戏!
- commons-lang包中我们常用的类的作用
- ajax框架dwr开发
- svn 提交到远程仓库_聊聊如何从SVN迁移源码到Git仓库
- -bash : xxx : command not found 新安装Linux后,安装一些必须软件(持续更新……)
- Ice-3.5.1在CentOS 6.5系统中的编译配置教程
- Laravel 队列:如何查看队列报错信息
- MySQL中空字符串与null的区别:计数 判断 时间
- delphi中,idftp怎样查找ftp服务器的是否存在一个文件,delphi – IDFTP DirExists和MakeDir...