gpt4 book ai didi

php - 回退到 RegEx 中的字符串开头

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:37:59 24 4
gpt4 key购买 nike

是否可以让 RegEx 回退到字符串的开头并重新开始匹配?

这就是我问的原因。给定以下字符串,我想捕获子字符串 blackredbluegreen按照该顺序,无论主题字符串中出现的顺序如何,并且仅当所有子字符串都存在于主题字符串中时。

$str ='blue-ka93-red-kdke3-green-weifk-black'

因此,对于以下所有字符串,RegEx 应捕获 blackredbluegreen(按顺序)

'blue-ka93-red-kdke3-green-weifk-black'
'green-ka93-red-kdke3-blue-weifk-black'
'blue-ka93-black-kdke3-green-weifk-red'
'green-ka93-black-kdke3-blue-weifk-red'

我想知道是否有一种方法可以匹配捕获组然后回退到字符串的开头并找到下一个捕获组。我希望像 ^.*(?=(black))^.*(?=(red))^.*(?=(blue))^.*(?=(green)) 会起作用,但 ^ 和前瞻当然不会以这种方式运行。

是否可以构建这样的 RegEx?

对于上下文,我将在 PHP 中使用 RegEx。

最佳答案

你可以使用

^(?=.*(black))(?=.*(red))(?=.*(blue))(?=.*(green))

注意:这将要求所有这些关键字都在字符串中。

参见 demo

匹配时无法重置 RegEx 索引,因此,您只能在开始时锚定的正向先行中使用捕获机制。前瞻将匹配字符串开头的一个空位置(由于 ^),如果前一个返回 true(找到一个字符串符合其模式的文本)。

你的 RegEx 没有以同样的方式工作,因为你匹配,使用 .* 的文本(这个子模式在前瞻之外)并重复字符串 anchor 的开始,如果你不要使用多行修饰符。

关于php - 回退到 RegEx 中的字符串开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35111272/

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