gpt4 book ai didi

regex - 为什么这里必须使用括号?

转载 作者:行者123 更新时间:2023-12-04 23:20:22 26 4
gpt4 key购买 nike

1 . ^([0-9A-Za-z]{5})+$
对比

2 . ^[a-zA-Z0-9]{5}+$
我的目的是匹配任何长度的字符串 n使得 n5 的倍数.
在这里查看:https://regex101.com/r/sS6rW8/1 .

请详细说明为什么案例 1 匹配字符串而案例 2 不匹配。

最佳答案

因为 {n}+并不意味着你认为它的作用。在 PCRE 语法中,这变成 {n}possessive quantifier .换句话说,a{5}+(?>a{5}) 相同.就像第二个 +在表达式 a++ 中,这与使用 atomic group 相同(?>a+) .

这对固定长度的 {n} 没有用但与 {min,max} 一起使用时更有意义.所以,a{2,5}+相当于 (?>a{2,5}) .

作为一个简单的例子,考虑这些模式:

^(a{1,2})(ab)    will match  aab -> $1 is "a", $2 is "ab"
^(a{1,2}+)(ab) won't match aab -> $1 consumes "aa" possessively and $2 can't match

关于regex - 为什么这里必须使用括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28751599/

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