Java 正则表达式匹配模式(贪婪型、勉强型、占有型)

发布时间 - 2026-01-10 22:07:24    点击率:

Greediness(贪婪型):最大匹配

X?、X*、X+、X{n,} 是最大匹配。例如你要用 “<.+>” 去匹配 “a<tr>aava </tr>abb”,也许你所期待的结果是想匹配 “<tr>”,但是实际结果却会匹配到 “<tr>aava </tr>。

在 Greediness 的模式下,会尽量大范围的匹配,直到匹配了整个内容,这时发现匹配不能成功时,开始回退缩小匹配范围,直到匹配成功

String test = "a<tr>aava </tr>abb ";
String reg = "<.+>";
System.out.println(test.replaceAll(reg, "###"));

输出:a###abb

Reluctant(Laziness)(勉强型):最小匹配
X??、X*?、X+?、X{n,}? 是最小匹配,其实X{n,m}?和X{n }?有些多余。在 Greediness 模式之后添加 ? 就成最小匹配。

在 Reluctant 的模式下,只要匹配成功,就不再继续尝试匹配更大范围的内容

String test = "a<tr>aava </tr>abb ";
String reg = "<.+?>";
System.out.println(test.replaceAll(reg, "###"));

输出:a###aava ###abb

与 Greediness 不同,Reluctant 模式下匹配了两次内容

Possessive(占有型):完全匹配
X?+、X*+、X++、X{n,}+ 是完全匹配,在 Greediness 模式之后添加 + 就成完全匹配。

Possessive 模式与 Greediness 有一定的相似性,那就是都尽量匹配最大范围的内容,直到内容结束,但与 Greediness 不同的是,完全匹配不再回退尝试匹配更小的范围。

String test = "a<tr>aava </tr>abb ";
String reg = "<.++>";
String test2 = "<tr>";
String reg2 = "<tr>";
System.out.println(test.replaceAll(reg, "###"));
System.out.println(test2.replaceAll(reg2, "###"));

输出:a<tr>aava </tr>abb


# Java  # 正则表达式  # 匹配模式  # 正则表达式中最短匹配模式的用法浅析  # JS中正则表达式全局匹配模式 /g用法详解  # 正则表达式惰性匹配模式(?)  # 正则表达式全局匹配模式(g修饰符)  # 正则表达式常见的4种匹配模式小结  # 模式下  # 的是  # 配了  # 更大  # 两次  # 有一定  # 要用  # 你所  # 量大  # 但与  # 更小  # 再回  # 却会  # 那就是  # 结果是  # pre  # lt  # Greediness  # gt  # abb 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何制作一个表白网站视频,关于勇敢表白的小标题?  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  ,网页ppt怎么弄成自己的ppt?  如何在 Pandas 中基于一列条件计算另一列的分组均值  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  网站建设保证美观性,需要考虑的几点问题!  北京专业网站制作设计师招聘,北京白云观官方网站?  Laravel如何实现一对一模型关联?(Eloquent示例)  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  北京的网站制作公司有哪些,哪个视频网站最好?  香港网站服务器数量如何影响SEO优化效果?  5种Android数据存储方式汇总  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  企业网站制作这些问题要关注  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  C语言设计一个闪闪的圣诞树  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  网站制作报价单模板图片,小松挖机官方网站报价?  LinuxCD持续部署教程_自动发布与回滚机制  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  python中快速进行多个字符替换的方法小结  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  如何用虚拟主机快速搭建网站?详细步骤解析  开心动漫网站制作软件下载,十分开心动画为何停播?  详解Android——蓝牙技术 带你实现终端间数据传输  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  SQL查询语句优化的实用方法总结  三星网站视频制作教程下载,三星w23网页如何全屏?  微信小程序 HTTPS报错整理常见问题及解决方案  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  如何在IIS7中新建站点?详细步骤解析  EditPlus中的正则表达式 实战(4)  微信小程序 canvas开发实例及注意事项  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  佛山网站制作系统,佛山企业变更地址网上办理步骤?  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  怎么用AI帮你设计一套个性化的手机App图标?  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  潮流网站制作头像软件下载,适合母子的网名有哪些?  Laravel如何处理文件下载请求?(Response示例)