Java中的正则表达式组匹配

问题描述 投票:0回答:1

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

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

我想要他们分三组

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

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

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

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

regex
1个回答
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不会将它们用作转义器而不是让它们使用正则表达式工具。我使用\ escapers因为你想匹配文字|,而不是将它们解释为or运算符。

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

© www.soinside.com 2019 - 2024. All rights reserved.