You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正则捕获字符串内嵌套函数名及现有正则匹配遗漏问题排查

正则匹配问题排查与修复

问题原因

你编写的正则([a-zA-Z0-9]+\s*\(([\w\s\,]+)?\)\s*)+无法捕获外层DECODE函数,核心问题出在括号内容的匹配规则限制:
正则中[\w\s\,]+的规则只允许括号内出现字母、数字、下划线、空格、逗号,但外层DECODE的括号内部包含NOT/AND逻辑运算符、以及ISNULL(parameter1)这类带嵌套括号的内容,完全超出了你限定的字符范围,所以整个DECODE(...)结构无法被匹配,自然抓不到对应的函数名。

解决方案

如果你的需求只是提取所有出现的函数名,不需要匹配完整的函数体结构,完全可以用更简单的正向肯定预查实现:
推荐正则:[a-zA-Z0-9]+(?=\s*\()
该正则的匹配逻辑是:命中所有后方紧跟着(可带任意空格)左括号的字母数字组合,刚好符合函数名的语法特征,实测可以同时匹配到示例中的DECODE以及所有内层的ISNULL函数名。
如果需要匹配完整的嵌套函数结构,正则本身对嵌套结构的支持依赖对应语言的正则引擎特性,比如部分引擎支持递归匹配可处理多层嵌套场景,但仅做函数名提取的话上述预查方案就足够使用。

内容的提问来源于stack exchange,提问作者Akash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 05:36:03