我想捕获表达式中存在的所有函数名,例如:
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