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

卢布拉克

当前尝试将注释与正则表达式匹配,但前提是没有函数跟随。目前我使用的正则表达式也匹配关键字函数。然后检查源代码(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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

正则表达式以匹配静态关键字和变量

正则表达式来移除所有的空格,除了围绕关键字和报价之间

使用正则表达式替换html标签和锚点(a)标签文本外部的匹配关键字

如何使用正则表达式匹配关键字和定界字符之间的字符:Python?

如何在匹配后和正则表达式中的关键字之前隐藏文本?

PHP正则表达式匹配多个关键字,其中last关键字是可选的

正则表达式 - 如果仅以关键字开头,则提取括号和引号内的单词

基于关键字过滤的正则表达式

匹配部分正确关键字的正则表达式

Golang正则表达式以匹配关键字对之间的多种模式

匹配正则表达式中不包括关键字的短语

Apify:PseudoUrl正则表达式以匹配包含给定关键字的URL

正则表达式按顺序匹配 2 个分隔的关键字

正则表达式匹配阿拉伯关键字

正则表达式用于多个关键字匹配

正则表达式匹配特定上下文中的关键字

正则表达式以匹配不在<a>标签或alt属性内的关键字

正则表达式匹配特定关键字之间的文本

正则表达式仅匹配整个单词的多个关键字搜索

如果关键字存在,则JavaScript正则表达式会拆分字符串

如果源代码包含关键字/正则表达式,如何使Maven构建失败

正则表达式,如果行不包含关键字

如何使用正则表达式和相交函数将关键字与文件分开

正则表达式获取关键字,所有数字和句点

用于数字集和关键字的Python正则表达式

如何使用正则表达式和一系列关键字替换?

正则表达式在括号和关键字之间获取文本

匹配不具有相同单词的关键字的正则表达式出现在另一个关键字之前

使用一个或多个单词作为搜索关键字匹配一行的正则表达式