我想使用正则表达式从String中删除常量文本和括号。 e.g。
INPUT Expected OUTPUT
var x = CONST_STR(ABC) var x = ABC
var y = CONST_STR(DEF) var y = DEF
如何实现这一目标?
答案 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的调用,因此正则表达式片段捕获的文本:([^)]+)
- 括号中的单词。