我有一个表达式Nvl(cost,Sum(cost1)) 在这种情况下,我需要先删除字符串,例如NVl和Sum
String functions=externalFormat.replaceAll("\\([^\\(]*\\)", "");
输入Nvl(成本,总和(成本1) 产出成本,成本1
答案 0 :(得分:1)
如果您不能使用捕获组(即,如果您可以使用捕获组,则(\w*?)\(
将捕获您需要在第一组中替换的文本)
您可以使用正向前瞻来仅捕获出现在方括号前面的单词字符(字母或数字):
\w*(?=\()
在诸如Nvl1 (cost,Sum (cost1))
这样的情况下,您甚至可以添加可选的空格字符,方法是将它们包括在前瞻字符之前:-
\w*\s*(?=\()
希望这可以帮助您解决问题。
答案 1 :(得分:0)
检查以下代码:
public static void main(String[] args) {
String externalFormat="Nvl(cost,Sum(Cost1)";
String functions=externalFormat.replaceAll("\\w+\\(|\\)", "");
System.out.println(functions.toLowerCase());
}