如何用正则匹配「func 」到对应右括号「)」之间的所有字符(含右括号)
匹配方案
由于目标内容存在嵌套括号的场景,需要使用支持递归匹配/平衡组的正则引擎才能实现,普通不支持递归特性的正则(如JavaScript原生正则)无法处理任意层级的嵌套括号。
可用正则表达式
包含func 前缀的匹配:
func\s+\w+\s*\((?:[^()]|(?R))*?\)
仅匹配func 到右括号之间的内容(不含func 前缀):
func\s+\K\w+\s*\((?:[^()]|(?R))*?\)
适用环境
上述正则为PCRE语法,可用于PCRE2、Python regex 第三方库、Java 9+、PHP等支持递归正则的环境。如果使用的环境不支持递归正则,可通过手动实现括号计数的逻辑完成匹配。
测试匹配结果
针对你提供的测试用例,最终匹配结果如下:
greet(person: String)fetchImages()chooseStepFunction(backward: Bool)printMathResult(_ mathFunction: (Int, Int) -> Int, _ a: Int, _ b: Int)mathResult(_ mathFunction: (Int, Int) -> Int, anotherFunc: (Double) -> Int)
内容的提问来源于stack exchange,提问作者Hassan Taleb
相关产品推荐
相关产品推荐

