如何使用regex提取(A(B(C)))格式的多层嵌套文本字符串
两层嵌套场景正则提取方案
你当前最多两层嵌套的场景完全可以通过正则实现提取需求,具体方案如下:
适配正则
^([^()]+)\(([^()]+)(?:\(([^()]+)\))?\)$
捕获组说明
- 组1:提取到的内容为
some text A,匹配首个左括号前的所有非括号字符 - 组2:提取到的内容为
some text B,匹配第一层括号内、内层左括号(存在时)前的所有非括号字符 - 组3:提取到的内容为
some text C,仅存在两层嵌套时会匹配到内容,否则该组为空
测试验证
完整嵌套格式(两层)
待匹配内容:some text A ( some text B ( some text C))
提取结果:
- 组1:
some text A - 组2:
some text B - 组3:
some text C
浅嵌套格式(一层)
待匹配内容:some text A ( some text B)
提取结果:
- 组1:
some text A - 组2:
some text B - 组3:无匹配值
补充说明
提取结果前后的多余空格可以直接通过字符串去首尾空格方法处理即可,无需调整正则规则。
内容的提问来源于stack exchange,提问作者João Pimentel Ferreira
相关产品推荐
相关产品推荐

