我正在尝试使用正则表达式来匹配以下字符串
[one[two[three[four|five]|six|seven]
我想要他们分三组
[one[two[three
,[four|five]
,|six|seven]
这是我到目前为止所提出的
(\\].*) for |six|seven] and `(\\[.*\\[)` for [one[two[three
我发现很难匹配最后一组[four|five]
答案 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
运算符。
.
匹配除行终止符之外的每个字符。