Delimeter的正则表达式

时间:2017-12-11 17:32:15

标签: java regex

我正在尝试为分隔符“(“, “)”, “,”编写正则表达式。我试着写一个正则表达式,但它对于定界符来说不正确。

假设输入为mult(3,add(2,subs(4,3)))。我的deimeter正则表达式的输出是:3,add(2,subs(4,3

public class Practice {

    private static final String DELIMETER = "\\((.*?)\\)";

    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        String arg = reader.next();
        Pattern p = Pattern.compile(DELIMETER);
        Matcher m = p.matcher(arg);
        while (m.find()) {
            System.out.println(m.group(1));
        }
    }
}

在分隔符之间获取字符串的正确正则表达式是什么?

1 个答案:

答案 0 :(得分:1)

通常,您不能使用正则表达式匹配任何可以递归嵌套的内容。但是,如果您从正则表达式中删除了?,它将从第一个(到最后一个)匹配,这可能已经足够了,具体取决于您希望输入看起来的内容等。