gpt4 book ai didi

正则表达式惰性量词断言开始和结束

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

当将正则表达式量化为惰性时,例如 \w{2,4}?,当断言为测试的开始和结束时,它是否比其他方式(贪婪)更有效或更不有效?

例如^\w{2,4}?$^\w{2,4}$ 测试 '12345' '1234'

最佳答案

两者都不匹配您的测试字符串,因为您的输入包含 5 个字符,而您的正则表达式仅匹配具有 2 到 4 个字符的字符串。这个 ? 在使用 anchor 时就不需要了。 ^.*?$^.*$ 的作用相同。我建议您使用 ^\w{2,4}$ 而不是 ^\w{2,4}?$。第二个需要 8 个步骤才能找到匹配项,而第一个需要 5 个步骤才能找到匹配项。

DEMO

让我们将 1234 视为示例字符串。

  1. ^\w{2,4}$

    从一开始,上面的正则表达式会贪婪地匹配范围从 2 到 4 个字符的所有字符,并且 $ anchor 断言我们在最后。

  2. ^\w{2,4}?$

    但是当我们使用它时,它最多匹配两个字符并检查行尾。因为第二个字符旁边没有行尾 anchor ,所以它匹配第三个字符并再次检查第三个字符旁边的行尾 anchor 。结果是否定的,所以它移动到下一个字符并匹配它。现在它检查线 anchor 的末端。是的,这是行尾。如果它在第四个字符之后有任何字符,那么它会放弃它的操作。这就是采取比贪婪步数更多步数的原因。

关于正则表达式惰性量词断言开始和结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28122728/

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