gpt4 book ai didi

ruby - 懒惰、贪婪和所有格量词之间有什么区别?

转载 作者:数据小太阳 更新时间:2023-10-29 07:14:30 28 4
gpt4 key购买 nike

以下量词在场景、速度等方面有何不同。

  • ????+ 都匹配 0 或 1 次
  • *, *?和*+` 都匹配0 次或更多次
  • ++?++ 都匹配1 次或多次

  • ?*+贪心
  • ??*?+?不情愿/懒惰
  • ?+*+++占有性

谁能帮助我理解这些术语的含义?为什么同一份工作的每个量词有三种变体?

最佳答案

取字符串

aaaab

并查看以下正则表达式如何匹配它:

Regex          Submatches
group 1 group 2 group3
(a?)(a*)(ab) a aa ab
(a??)(a*)(ab) aaa ab
(a?+)(a*)(ab) a aa ab
(a*)(a?)(ab) aaa ab
(a*?)(a?)(ab) aa a ab
(a*+)(a?)(ab) aaaa <Match fails!>
(a+)(a*)(ab) aaa ab
(a+?)(a*)(ab) a aa ab
(a++)(a*)(ab) aaaa <Match fails!>

解释:

  • a? 尝试匹配一个 a,但如果整个匹配成功所必需的话,它准备不匹配任何内容。
  • a?? 尝试不匹配任何内容,但它已准备好匹配一个 a,如果这是整个匹配成功所必需的。
  • a?+ 尝试匹配一个 a。如果它能做到这一点,它不会退缩到不匹配任何东西,如果这对整个匹配成功是必要的。如果它无法匹配 a,那么它很乐意不匹配任何内容。
  • a* 尝试匹配尽可能多的 a,但它准备匹配较少的 a,如果是的话,甚至不匹配整场比赛取得成功所必需的。
  • a*? 尝试不匹配任何内容,但它准备匹配尽可能多的 a 以使整个匹配成功,但不是更多。
  • a*+ 尝试匹配尽可能多的 a。如果它能做到这一点,它将不会后退以匹配更少的a,如果这对于整个匹配成功是必要的。如果它连一个 a 都不能匹配,那么它很乐意什么都不匹配。
  • a+ 尝试匹配尽可能多的 a,但它准备匹配较少的 a(但至少是一个)如果这是整场比赛成功所必需的。
  • a+? 尝试只匹配一个 a,但它准备匹配尽可能多的 a整场比赛成功,但不会更多。
  • a++ 尝试匹配尽可能多的 a。如果它能做到这一点,它将不会后退以匹配更少的a,如果这对于整个匹配成功是必要的。如果它甚至无法匹配单个 a,则正则表达式失败。

关于ruby - 懒惰、贪婪和所有格量词之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14345941/

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