gpt4 book ai didi

Php preg_match_all 只匹配最后一个元素

转载 作者:行者123 更新时间:2023-12-04 15:52:56 28 4
gpt4 key购买 nike

我有这个正则表达式

{{([ a-zA-Z0-9_\-]+)\s*(?:\[([ a-zA-Z0-9_\-]+)\]\s*)*}}

我需要匹配如下字符串:

{{word with spaces}}
{{word with spaces [sub1]}}
{{word with spaces [sub1] [sub 2] [Sub-3] }}

捕获带空格的单词,以及sub1sub 2Sub-3

正则表达式有效,但 sub-s 字符串匹配仅给出最后一个匹配项,即 Sub-3。如何获取所有的sub1, sub 2, Sub-3?谢谢

最佳答案

这是另一种使用 \G 的变体,它速度更快并且避免了空匹配:

(?:{{([\w-]+(?:\h+[\w-]+)*)|(?!\A)\G)(?:\h*\[([^]]+)]|\h*}})

RegEx Demo

\G 断言位置在前一个匹配的末尾或第一个匹配的字符串的开头。

关于Php preg_match_all 只匹配最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57108555/

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