gpt4 book ai didi

php - 如果正则表达式后面跟着空格和关键字,则跳过匹配

转载 作者:行者123 更新时间:2023-12-02 18:39:38 25 4
gpt4 key购买 nike

当前正在尝试将注释与正则表达式匹配,但前提是后面没有函数。目前我使用的正则表达式也与关键字函数匹配。然后检查源代码(php)是否设置了该组。

/\/\*\*.*?\*\/\s*(function)?/sg

https://regex101.com/r/l0j1ip/1

现在的问题是是否可以用纯正则表达式来实现。我已经尝试过简单的否定前瞻,但没有成功。虽然不再单独发表评论,但只是与后续评论一起发表。

/\/\*\*.*?\*\/\s*(?!function)/sg

https://regex101.com/r/PuUUw6/1

接下来我尝试了非捕获组。但也有没有成功。

/(?:\/\*\*.*?\*\/\s*function)|\/\*\*.*?\*\/\s*/sg

https://regex101.com/r/wkQE7E/1

在评论了信息(*SKIP)(*FAIL)后,我也尝试了但没有成功。跳过此关键字之上的所有匹配项。单个匹配项也会被跳过。

/\/\*\*.*?\*\/\s*function(*SKIP)(*FAIL)|\/\*\*.*?\*\//sg

https://regex101.com/r/OJSFrF/1

最佳答案

再次阅读问题后,使用否定前瞻应该是可行的;重复必须位于否定表达式内:

/\/\*\*((?!\*\/).)*\*\/(?!\s*function)/sg

似乎您需要更好地了解回溯的工作原理,使用 .*? 而不是 .* 意味着正则表达式引擎将首先尝试匹配 之后的所有内容.* 然而,否定的前瞻会使匹配失败,并且 .* 继续匹配。使用 ((?!\*\/).)* 不能匹配 \*\/.*? 可以,回溯后。另一种解决方案是使用原子组 (?>\/\*\*.*?\*\/)(?!\s*function)

关于php - 如果正则表达式后面跟着空格和关键字,则跳过匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68205696/

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