使用正则表达式在开括号前删除字符串

时间:2019-05-16 11:51:23

标签: java regex

我有一个表达式Nvl(cost,Sum(cost1)) 在这种情况下,我需要先删除字符串,例如NVl和Sum

        String functions=externalFormat.replaceAll("\\([^\\(]*\\)", "");

输入Nvl(成本,总和(成本1) 产出成本,成本1

2 个答案:

答案 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());

    }