我想在Scala中将正则表达式模式替换为另一个正则表达式模式,是否有可用于它的直接功能?或者我应该逐个找到每个正则表达式并进行更改。
val string1 = "(value1 + value2) + max(value3, max(value4, value5))"
//convert to
val string2 = "(value1 + value2) + lmax[(value3, lmax[(value4, value5)])]"
所以,我想将string1转换为string2,基本上是转换
max(something) => lmax[(something)]
对不起,如果这是一个非常天真的问题。我是Scala的新手。
答案 0 :(得分:2)
首先,您的问题与Scala几乎没有关系。它更像是一个正则表达式问题。
其次,您并没有真正用另一种正则表达式模式替换正则表达式模式。您正在尝试处理嵌套捕获组,而正则表达式并不擅长。
事实上,情况比这更糟糕。您正在尝试捕获由匹配括号分隔的组。再一次,正则表达式并不擅长。
考虑这个字符串。
"value1 + max((value2 + value3), max(value4, value5))"
现在,您在外部捕获组中有两组括号。第一组不是目标,应该被忽略,而第二组是应该被捕获和替换的目标。这不是一项微不足道的任务。
当然,如果有人在代码中加了一个换行符,那么你就会被冲洗掉。
"max(value12
+ value13)"
在我看来,正则表达式并不是这项工作的工具。 (但我以前错了......)