如何使用正则表达式从大括号外部获取值

时间:2014-07-25 06:38:27

标签: java javascript regex

请参阅以下要求。

String s1 = "||||(;)||(;;)||(;)";

上述字符串的输出应为:||||||

String s2 = ";;(||)";

上述字符串的输出应为:;;

String s3 = ";;";

上述字符串的输出应为:;;

我正在尝试下面的示例,但s1的输出是;

Pattern p = Pattern.compile("\\(^(.*?)\\)");
Matcher m = p.matcher(filter);

while (m.find()) {
    System.out.println(m.group(1));
}

2 个答案:

答案 0 :(得分:2)

由于您只能删除大括号内的所有内容,因此可以使用:

str.replaceAll("\([^\)]*\)", "");

答案 1 :(得分:0)

试试这个正则表达式..

public static void main(String[] args) {
    String s1 = "||||(;)||(;;)||(;)";
    Pattern p = Pattern.compile("(.*?)(?:\\(.*?\\))");
    Matcher m = p.matcher(s1);
    while (m.find()) {
        System.out.println(m.group(1));
    }

}

O / P:

case -1 : s1 = "||||(;)||(;;)||(;)";
||||
||
||

case -2 :   s1 = ";;(||)";

    ;;