(希望写一个好问题)。
我必须使用正则表达式来匹配Java中的RPG函数。
我所具有的功能可能通过以下几种方式:
nameFunction()
nameFunction(params)
nameFunction('otherFunction(' + variable + ')')
nameFunction('otherFunction.get('''+trim(string_variable)+''')')
fun1() + fun2()
其中'用于打开/关闭字符串,而'也用作'本身的转义字符。
我已经尝试过此正则表达式:
\w+\([^\)]*\)
我想用\ w +匹配名称,然后是(,所有字符,但没有右括号,最后是封闭的。
前两个功能可以正确识别,但第三个和第四个功能不能。正则表达式匹配
nameFunction('otherFunction(' + variable + ')
nameFunction('otherFunction.get('''+trim(string_variable)
跳过第三个中最后一个封闭的括号,并跳过第四个中的字符串连接(第五个示例是为了说明我可以具有多个函数,并且想分别识别它们)。
有什么建议么?提前致谢。
最佳答案
如果字符串没有转义符,则可以使用:
\w+\((?:[^'()]|'[^']*')*\)
如果要处理反斜杠转义,可以使用以下方法:
\w+\((?:[^'()]|'(?:[^'\\]|\\.)*')*\)