首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oniguruma正则表达式条件群捕获

Oniguruma正则表达式条件群捕获
EN

Stack Overflow用户
提问于 2021-10-10 19:05:58
回答 1查看 224关注 0票数 1

我试图使用function (用于VSCode语法突出显示)将单词::捕获为两个不同的组,具体取决于::是否是前面的字符。据我所知,Oniguruma不支持条件词,因此我认为如果字符不存在,我可以将regex结果捕获到第1组,如果字符不存在,则将其捕获到第2组。

目前,我有以下几点:

代码语言:javascript
复制
(?>::\s*\b(function)\b)|\b(function)\b

对代码进行测试的一些文本:

代码语言:javascript
复制
  integer function fun_with_func_space(     function    )
    integer, intent(inout) :: function
  end function fun_with_func_space

预期正则匹配

给定上面的文本,组$1应该

代码语言:javascript
复制
finds 1st and 2nd "function" in 'integer function fun_with_func_space(     function    )'
finds no match in 'integer, intent(inout) :: function'
finds "function" in 'end function fun_with_func_space'

另一方面,组$2应

代码语言:javascript
复制
finds no match in 'integer function fun_with_func_space(     function    )'
find "function" in 'integer function fun_with_func_space(     function    )'
finds no match in 'end function fun_with_func_space'

据我所知,下面的意思应该是:“捕获并退出到第2组,如果前面是::function,则在第1组中捕获function。”根据regex101.com,它应该可以工作:https://regex101.com/r/VtgeTD/1,但是我的语法高亮显示仍然失败。我做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-10 19:29:12

试着看看后面:

代码语言:javascript
复制
(?<=::|:: )\b(function)\b|\b(function)\b

现场演示

或者使用非捕获组:

代码语言:javascript
复制
(?:::\s*)(function)\b|\b(function)\b

现场演示

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69518167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档