gpt4 book ai didi

regex - 怎么样?在正则表达式中使量词变得懒惰

转载 作者:行者123 更新时间:2023-12-01 19:25:14 25 4
gpt4 key购买 nike

我最近一直在研究正则表达式,并发现 ? 运算符可以生成 *+? 懒惰。我的问题是它是如何做到的?例如, *? 是一个特殊的运算符,还是 ?* 有影响?换句话说,正则表达式是否将 *? 识别为一个运算符本身,或者正则表达式是否将 *? 识别为两个单独的运算符 *?如果 *? 被识别为两个单独的运算符,那么 ? 如何影响 * 使其变得惰性。如果 ? 意味着 * 是可选的,那么这是否意味着 * 根本不必存在。如果是这样,那么在语句 .*? 中,正则表达式不会只匹配单独的字母和整个字符串而不是较短的字符串吗?请解释一下,我非常想理解。非常感谢。

最佳答案

?在不同的上下文中可能意味着很多不同的事情。

  • 跟在普通的正则表达式标记(字符、简写、字符类、组...)之后,表示“与前一项匹配 0-1 次”。
  • 跟随量词,如 ? , * , + , {n,m} ,它具有不同的含义:“使前面的量词变得懒惰而不是贪婪(如果这是默认值;但是可以更改 - 例如在 PHP 中,/U 修饰符使所有量词默认情况下是惰性的,因此额外的 ? 使它们变得贪婪)。
  • 在左括号之后,它标记了特殊结构的开始,例如

    a) (?s) : 模式修饰符(“打开 dotall 模式”)
    b) (?:...) :使该组不捕获
    c) (?=...)(?!...) : 前瞻断言
    d) (?<=...)(?<!...) : 后向断言
    e) (?>...) : 原子团
    f) (?<foo>...) :命名捕获组
    g) (?#comment) :内联注释,被正则表达式引擎忽略
    h) (?(?=if)then|else) : 条件句

以及其他。并非所有构造都适用于所有正则表达式风格。

  • 在字符类 ( [?] ) 中,它仅逐字匹配 ? .

关于regex - 怎么样?在正则表达式中使量词变得懒惰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17400048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com