需要一个正则表达式来替换func_1(func_2(a,b))为func_1_func_2(a,b)

时间:2018-05-22 12:33:44

标签: regex oracle plsql

如果有人可以帮我满足以下要求,那就太棒了

regex_replace(source,search_pattern,replace_pattern)

1)

Input :func_1(func_2(a,b))

output :func_1_func_2(a,b)

2)

func_1(func_2())

output :func_1_func_2()

3)

func_1(func_2()) + 3

output :func_1_func_2() + 3

4)

func_1(func_2()) + func_1(func_3()) 

output :func_1_func_2() + func_1_func_3()

尝试

select REGEXP_REPLACE('func_1(func_2(a,b))','func_1\(','func_1_') from dual ;

得到 func_1_func_2(a,b))

最后还有一个额外的

同样在上述情况下,func_1只有5个可能的值

2 个答案:

答案 0 :(得分:1)

正则表达式:output_file.write(str(unpack('f', byte)[0]))

替换为:(\w+)(\()([\w(),]+)(\))

Demo

答案 1 :(得分:0)

尝试这种模式。它适用于所有示例。希望它适用于你没有展示的其他人。

select REGEXP_REPLACE(s,'(func_.)\((func_.\(.*?\))\)','\1_\2') from t ;

enter image description here

Dbfiddle demo

相关问题