gpt4 book ai didi

regex - 为什么这个正则表达式捕获组不为每场比赛重复?

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

我正在 regex101.com 上测试这个

正则表达式:^\+([0-9A-Za-z-]+)(?:\.([0-9A-Za-z-]+))*$

测试字符串:+beta-bar.baz-bz.fd.zz

字符串匹配,但是“匹配信息”框显示只有两个捕获组:

匹配 1
1. [1-9] `beta-bar`
2. [20-22] `zz`

我期待所有这些捕获:

  1. beta-bar
  2. baz-bz
  3. fd
  4. zz

为什么周期之间的每个标识符都没有被识别为自己的捕获组?

最佳答案

发生这种情况的原因是,当在捕获组上使用量词并被捕获 n 次时,只有最后捕获的文本会存储在缓冲区中并在最后返回。 p>

您可以使用简单的正则表达式 [+.]preg_split 来代替匹配这些部分:

$str = "+beta-bar.baz-bz.fd.zz";
$a = preg_split('/[+.]/', $str, -1, PREG_SPLIT_NO_EMPTY);

参见 IDEONE demo

结果:

Array
(
[0] => beta-bar
[1] => baz-bz
[2] => fd
[3] => zz
)

关于regex - 为什么这个正则表达式捕获组不为每场比赛重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32811006/

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