提取括号内除分号之外的数据

发布于 2025-01-15 20:44:27 字数 167 浏览 3 评论 0原文

想要提取括号内的数据。但是如果这些括号位于单引号之间。那么就应该忽略它。使用正则表达式。

输入:

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

预期输出:

AA+BB
AD'A(CC)B'

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:

AA+BB
AD'A(CC)B'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一梦浮鱼 2025-01-22 20:44:28
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;
    }
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;
    }
白昼 2025-01-22 20:44:28
\(
    (
        (
            [^\(\)]+|
            '\(|
            \)'
        )+
    )
\)

它由三个主要部分组成。

  1. [^\(\)]+ 任何不是括号的内容
  2. ' \( 转义的左括号 '(
  3. \)' 转义的右括号 )'

全部包含在匹配的括号文字中,然后是不重复的外部组(组 1)和具有重复的内部组。

第 1 组的比赛是

AA+BB
AD'(CC)'
\(
    (
        (
            [^\(\)]+|
            '\(|
            \)'
        )+
    )
\)

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.

The matches in group 1 are

AA+BB
AD'(CC)'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文