正则的三种模式(贪婪型、勉强型、占有型)详解

这次给大家带来正则的三种模式贪婪型、勉强型、占有型)详解,使用正则三种模式(贪婪型、勉强型、占有型)的注意事项有哪些,下面就是实战案例,一起来看一下。

Greediness(贪婪型):最大匹配

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

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

String test = "aaava 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 = "aaava 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 = "aaava abb ";String reg = "";String test2 = "";String reg2 = "";System.out.println(test.replaceAll(reg, "###"));System.out.println(test2.replaceAll(reg2, "###"));

登录后复制

输出:a

aava abb

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

在linux里使用正则表达式详解

正则的操作符使用详解

以上就是正则的三种模式(贪婪型、勉强型、占有型)详解的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2777705.html

(0)
上一篇 2025年3月8日 15:12:37
下一篇 2025年3月8日 15:12:46

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 正则的惰性匹配模式(?)使用详解

    这次给大家带来正则的惰性匹配模式(?)使用详解,正则惰性匹配模式(?)使用的注意事项有哪些,下面就是实战案例,一起来看一下。 正则表达式惰性匹配模式:在贪婪匹配模式一章节已经说过人性是贪婪的,希望获得更多的金钱、地位甚至美女,但是也有很多清…

    编程技术 2025年3月8日
    200
  • 正则全局匹配模式g修饰符的使用详解

    这次给大家带来正则全局匹配模式g修饰符的使用详解,使用正则全局匹配模式g修饰符的注意事项有哪些,下面就是实战案例,一起来看一下。 正则表达式g修饰符: g修饰符用语规定正则表达式执行全局匹配,也就是在找到第一个匹配之后仍然会继续查找。 语法…

    编程技术 2025年3月8日
    200
  • js 中的单例模式

    本篇文章给大家分享的内容是关于js 中的单例模式,有着一定的参考价值,有需要的朋友可以参考一下 js 单例模式 顾名思义: 只能生成一个 实例对象 nbsp;html>                js_singleton_patt…

    编程技术 2025年3月8日
    200
  • 怎么使用JS严格模式

    这次给大家带来怎么使用JS严格模式,使用JS严格模式的注意事项有哪些,下面就是实战案例,一起来看一下。 所谓严格模式其实就是一个不会赋值给任何变量的字符串 “use strict” 如果在全局作用域下 给出这个提示,那整个脚本将采用严格模式…

    编程技术 2025年3月8日
    200
  • JS实现单例模式的步奏详解

    这次给大家带来JS实现单例模式的步奏详解,JS实现单例模式的注意事项有哪些,下面就是实战案例,一起来看一下。 传统单例模式 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 实现单例核心思想 无非是用一个变量来标志当前是否已经为某个类…

    编程技术 2025年3月8日
    200
  • vue项目的History模式

    这次给大家带来vue项目的History模式,操作vue项目History模式的注意事项有哪些,下面就是实战案例,一起来看一下。 但是不难发现#的出现真的很丑陋,并且也不知道这是什么作用? 所以就去Stack Overflow上搜索了,果然…

    编程技术 2025年3月8日
    200
  • ajax三种解析模式使用详解

    这次给大家带来ajax三种解析模式使用详解,ajax三种解析模式使用的注意事项有哪些,下面就是实战案例,一起来看一下。 一、Ajax中的JSON格式 html代码: var btn = document.getElementById(“bt…

    编程技术 2025年3月8日
    200
  • builder模式有哪些使用方法

    这次给大家带来builder模式有哪些使用方法,builder模式使用的注意事项有哪些,下面就是实战案例,一起来看一下。 概述 Builder模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 使用场景 相同的…

    编程技术 2025年3月8日
    200
  • Builder模式使用教程

    这次给大家带来Builder模式使用教程,Builder模式使用的注意事项有哪些,下面就是实战案例,一起来看一下。 概述 Builder模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 使用场景 相同的方法,…

    编程技术 2025年3月8日
    200
  • JS严格模式知识点总结(详细解答)

    本篇文章给大家整理了js严格模式下的相关知识点以及代码实例分享,感兴趣的跟着小编一起学习下吧。 所谓严格模式其实就是一个不会赋值给任何变量的字符串 “use strict” 如果在全局作用域下 给出这个提示,那整个脚本将采用严格模式。也可以…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论