简体   繁体   English

提取括号内的数据,但用分号括起来

[英]Extract data inside parenthesis except being enclosed by semicolon

Want to extract data inside parenthesis.想要提取括号内的数据。 But if those parenthesis are inside between single quotes.但是如果那些括号在单引号之间。 Then it should be neglected.那么它应该被忽略。 Using regular expression.使用正则表达式。

Input:输入:

XCA(AA+BB)AA(AD'A(CC)B')

Expected Output:预计 Output:

AA+BB
AD'A(CC)B'
String in="XCA(AA+BB)AA(CC)AD'(CC)'XCA(AA+BB)";
        String result="";
        boolean x=false;
        for (int i = 0; i < in.length(); i++){
        char ch = in.charAt(i);
        String part = String.valueOf(ch);
        int number = 0;
        if (ch == '\'' ) {
            part = "";
            number++;
            for (int j = i + 1; j < in.length(); j++) {
                char d = in.charAt(j);
                if (d == '\'') {
                    number++;
                }
                if (d == '\'') {
                    number--;
                    i = j;
                    if (number == 0) {
                        break;
                    }
                }
                part += d;
            }

        }
        if (ch == '(' ) {
            part = "";
            number++;
            for (int j = i + 1; j < in.length(); j++) {
                char d = in.charAt(j);
                if (d == '(') {
                    number++;
                }
                if (d == ')') {
                    number--;
                    i = j;
                    if (number == 0) {
                        break;
                    }
                }
                part += d;
            }

            System.out.println(part);
        }

        result += part;
    }
\(
    (
        (
            [^\(\)]+|
            '\(|
            \)'
        )+
    )
\)

It consists of three main parts.它由三个主要部分组成。

  1. [^\(\)]+ Anything that is not an parenthesis [^\(\)]+任何不是括号的东西
  2. ' \( an escaped open parenthesis '( ' \(转义的左括号'(
  3. \)' an escaped closing parenthesis )' \)'转义的右括号)'

All enclosed in a matching parenthesis literals then an outer group (group 1) without repetition and an inner group with repetition.全部包含在匹配的括号文字中,然后是一个没有重复的外部组(第 1 组)和一个有重复的内部组。

The matches in group 1 are第1组的比赛是

AA+BB
AD'(CC)'

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM