`

php正则 贪婪模式与懒惰模式

    博客分类:
  • php
阅读更多
当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。考虑这个表达式:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。

有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。这样.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。现在看看懒惰版的例子吧:

a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)和ab(第四到第五个字符)。

注意, 若pattern中使用了/i 表示不区分大小写
                         /s 表示.还匹配空白字符
                         /U 表示模式反转, 即贪婪匹配模式变成懒惰匹配模式, 懒惰匹配模式变成贪婪匹配模式
分享到:
评论

相关推荐

    php正则表达式中的非贪婪模式匹配

    ### PHP正则表达式中的非贪婪模式匹配 在PHP中,正则表达式是一种非常强大的文本处理工具,它可以帮助我们高效地完成各种复杂的文本搜索、替换等操作。而在正则表达式的众多特性中,贪婪与非贪婪模式是理解并正确...

    浅谈php正则表达式中的非贪婪模式匹配的使用

    正则表达式中的非贪婪模式也称为懒惰模式,它尽可能少地匹配字符,即当模式中包含量词时,它会在满足匹配条件的最短字符串处停止。这与贪婪模式形成对比,贪婪模式会尽可能多地匹配字符,直到字符串的最后一个字符。...

    精通正则表达式(第3版).pdf

    8. 正则表达式的贪婪与非贪婪模式:在正则表达式中,量词(如*、+、?)默认是贪婪的,它会尽可能多地匹配字符;非贪婪模式(或懒惰模式)则匹配尽可能少的字符,通常通过在量词后面加上一个问号(?)来实现。 9. ...

    (正则表达式)学习笔记

    7. **重复与贪婪与懒惰** - 贪婪匹配:默认情况下,`*`、`+`、`?` 和 `{n, m}` 会尽可能多地匹配字符。 - 懒惰匹配:通过在量词后加一个问号 `?`,如 `*?`、`+?`、`??` 和 `{n, m}?`,使其尽可能少地匹配字符。 8...

    精通正则表达式_第三版(高清版).

    正则表达式,也称为“正则式”,是一种文本模式,包括普通字符(例如,字母和数字)和特殊字符(称为“元字符”)。它使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。正则表达式在编程和文本处理领域...

    正则表达式帮助文档 一点正则表达式的文档 随便看看

    正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,它用于匹配字符串模式,广泛应用于搜索、替换、数据提取等场景。本文档旨在帮助读者理解和掌握正则表达式的基本概念、语法以及常见用途。 ...

    PHP中的正则表达式实例详解

    ### 正则表达式的贪婪与懒惰模式 正则表达式在默认情况下是“贪婪”的,它们会匹配尽可能多的字符。例如,使用“.*”来匹配任意字符直到字符串的末尾。相反的,懒惰模式只匹配所需最少量的字符,使用“.*?”来实现...

    PCRE.zip 解析正则表达式

    正则表达式(Regular Expression)是编程领域中用于模式匹配和文本处理的一种强大工具,而PCRE(Perl Compatible Regular Expressions)是实现正则表达式的库,它在许多编程语言和系统中被广泛使用,包括PHP、Perl和...

    正则表达式详解,可以让你很快就掌握正则表达式

    2. **贪婪与懒惰匹配**:默认情况下,正则表达式采用贪婪匹配方式,即尽可能多地匹配字符。可以通过在量词后面加上`?`使其变为懒惰匹配,即尽可能少地匹配字符。 3. **条件匹配**:使用`(?(id/name)yes-pattern|no-...

    php获取超链接文本内容的正则表达式(五种方法)

    使用`preg_match_all`函数与相应的正则表达式`/[^>]*>checkuser</a>/i`可以精确找到这个特定的文本。正则表达式中的`[^>]*`表示匹配除了`>`之外的任意字符,`i`修饰符表示匹配时不区分大小写。 第三种方法中使用了`...

    使用正则表达式去除所有html标签只保留文字

    此外,正则表达式匹配时的贪婪模式和非贪婪模式对于匹配的结果有着决定性的作用。在上述示例中,使用了非贪婪的懒惰量词`+?`,这是为了在遇到嵌套标签时能够匹配到第一个闭合的标签,避免跨标签匹配的问题。 为了...

    正则表达式高级技巧及实例详解 笨活儿

    正则表达式在编程语言如PHP中广泛使用,且通常与Perl语言的语法兼容。 1. **贪婪与懒惰匹配** - **贪婪匹配**:默认情况下,正则表达式中的量词(如`*`, `+`, `{n,}`等)是贪婪的,意味着它们会尽可能多地匹配字符...

    正则表达式的高级技巧分享

    正则表达式(regular expression abbr. regex) 功能强大,能够用于在一大串字符里找到所需信息。它利用约定俗成的字符结构表达式来发生作用...1. 贪婪/懒惰 所有能多次限定的正则运算符都是贪婪的。他们尽可能多地匹配目

    (很有用)PHP中正则表达式详细说明.pdf

    8. **懒惰匹配与贪婪匹配** 默认情况下,正则表达式采用贪婪匹配,尽可能多地匹配字符。使用问号`?`可将其变为懒惰匹配,如`.*?`会尽可能少地匹配字符。 9. **正向前瞻与正向后瞻** 前瞻断言`(?=pattern)`确保...

    用正则按最后一个_分割字符

    想把pub_form_year_01分割为’pub_from_year’和’01’两部分,或者取得’pub_from_year’这个字段也可以, 分割的话很难按最后一个’_’...贪婪与懒惰 当正则表达式中包含能接受重复的量词(指定数量的代码,例如*,{5,12

    解决正则表达式\w和\d的疑惑

    如上文代码所示,使用 PHP 中的 preg_replace() 函数进行字符串替换时,可以通过正则表达式来指定匹配模式,然后用其他字符或字符串来替换匹配到的内容。 最后,需要注意的是正则表达式的匹配过程受到特定模式的...

Global site tag (gtag.js) - Google Analytics