正则表达式删除括号,但不删除其内容

时间:2015-08-12 13:18:38

标签: regex scripting

我想使用正则表达式从String中删除常量文本和括号。 e.g。

    INPUT                  Expected OUTPUT
   var x = CONST_STR(ABC)  var x = ABC
   var y = CONST_STR(DEF)  var y = DEF

如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

尝试使用正则表达式:

(?<==\s)\w+\(([^)]+)\)

DEMO 这意味着:

  • (?<==\s) - =和空格(\s)的后视,regax需要休息这些标志,
  • \w+ - 一个或多个单词字符(A-Za-z_0-9),这可能会升级为您正在处理的代码的语言命名规则,
  • \( - 左括号,
  • ([^)]+) - 为一个或多个字符捕获组(\1$1),而不是关闭括号,
  • \) - 右括号,

请记住,在Java中,您需要使用双转义字符\, 喜欢在:

public class Test {
    public static void main(String[] args) {
        System.out.println("var y = CONST_STR(DEF)".replaceAll("(?<==\\s)\\w+\\(([^)]+)\\)", "$1"));
    }
}

带输出:

  

var y = DEF

$1中的replaceAll()是对捕获的群组nr 1的调用,因此正则表达式片段捕获的文本:([^)]+) - 括号中的单词。