Regex捕获字符串中的嵌套函数



我想捕获表达式中存在的所有函数名,例如:

DECODE(TRUE,NOTISNULL(参数1(,VARIABLE1,ISNULL

我试过

([a-zA-Z0-9]+s*(([ws,]+)?)s*)+

正则表达式捕获除DECODE之外的所有函数名。有人能说出我犯了什么错误吗?

请尝试这个

([a-zA-Z0-9]+s*)((.+?))

基本上,它捕获两组:在(之前和在(*)内部。您可以选择以后要提取的组。您可以在这里观看演示:https://regex101.com/r/9ILSYn/1

或者您可以将?:放在后面的组中,将其标记为非捕获组

([a-zA-Z0-9]+s*)(?:(.+?))

在编辑前的regex中,您没有拆分捕获组,因此它将第一个函数与参数混合在一起。

在更新后的regex中,您正在捕获(*)中带有单词和空格的组,其中不包括像(这样的字符,因此它没有捕获DECODE

最新更新