我正在尝试function
使用 Oniguruma 正则表达式(用于 VSCode 语法突出显示)将单词捕获到 2 个不同的组中,具体取决于::
前面的字符。据我所知 Oniguruma 不支持条件,因此我认为如果字符不存在,我可以将正则表达式结果捕获到第 1 组,如果它们存在,我可以捕获到第 2 组
目前,我有以下内容:
(?>::\s*\b(function)\b)|\b(function)\b
一些文本来测试代码:
integer function fun_with_func_space( function )
integer, intent(inout) :: function
end function fun_with_func_space
预期的正则表达式匹配
鉴于上面的文字组$1
应该
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 应该
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
if 前面有 :: else capture function
in group 1。” 并且根据 regex101.com 它应该可以工作:https://regex101.com/r/VtgeTD/1,但我的语法突出显示仍然失败。难道我做错了什么?