Java中的正则表达式组匹配

时间:2017-12-21 13:24:29

标签: regex

我正在尝试使用正则表达式来匹配以下字符串

[one[two[three[four|five]|six|seven]

我想要他们分三组

[one[two[three[four|five]|six|seven]

这是我到目前为止所提出的

(\\].*) for  |six|seven] and `(\\[.*\\[)` for [one[two[three

我发现很难匹配最后一组[four|five]

1 个答案:

答案 0 :(得分:1)

导入:

import java.util.regex.*;

如果元素数量没有变化(如您未指定的那样),则可以使用以下内容:

    Pattern pattern = Pattern.compile("(\\[.+\\[.+)(\\[.+\\|.+])(\\|.+\\|.+)");
    Matcher matcher = pattern.matcher("[one[two[three[four|five]|six|seven]");

    //execute matching (required to iterate over groups)
    boolean matched = matcher.matches();

    for(int i=0; i <= matcher.groupCount(); i++) {
        System.out.println("Group " + i + ": " + matcher.group(i));
    }

\正则表达式转义器被转义,因此Java不会将它们用作转义器而不是让它们使用正则表达式工具。我使用了\转发器,因为您希望匹配文字|,而不是将它们解释为or运算符。

.匹配除行终止符之外的每个字符。