Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java重复模式匹配_Java_Design Patterns_Matching_Repeat - Fatal编程技术网

Java重复模式匹配

Java重复模式匹配,java,design-patterns,matching,repeat,Java,Design Patterns,Matching,Repeat,我试图获得Java中简单正则表达式的每个重复匹配: (\\[[^\\[]*\\])* 它匹配[]中包含的任何字符串,只要它不包含[字符。例如,它将匹配 [a][nice][repetitive][pattern] 没有关于存在多少这样的组的先验知识,我无法找到通过模式匹配器访问单个匹配组的方法,即无法获得 [a], [nice], [repetitive], [pattern] (或者,更好的是,没有括号的文本),在4个不同的字符串中 使用pattern.matcher()我总是得到最后一

我试图获得Java中简单正则表达式的每个重复匹配:

(\\[[^\\[]*\\])*
它匹配[]中包含的任何字符串,只要它不包含[字符。例如,它将匹配

[a][nice][repetitive][pattern]
没有关于存在多少这样的组的先验知识,我无法找到通过模式匹配器访问单个匹配组的方法,即无法获得

[a], [nice], [repetitive], [pattern]
(或者,更好的是,没有括号的文本),在4个不同的字符串中

使用pattern.matcher()我总是得到最后一组

当然,在Java中一定有一种简单的方法可以做到这一点,而我却缺少这种方法

谢谢你的帮助

while (matcher.find()) {
   System.out.println(matcher.group(1));
}
以下是我的尝试:)

import java.util.ArrayList;
导入java.util.List;
导入java.util.regex.Matcher;
导入java.util.regex.Pattern;
公开课Foo{
公共静态void main(字符串[]args){
最终字符串文本=“[a][nice][repeative][pattern]”;
System.out.println(getStrings(text));//打印[a,漂亮,重复,模式]
}
private static final Pattern=Pattern.compile(“\\[([^\\]]+])”;
公共静态列表GetString(最终字符串文本){
最终列表字符串=新的ArrayList();
最终匹配器匹配器=pattern.Matcher(文本);
while(matcher.find()){
add(matcher.group(1));
}
返回字符串;
}
}
我会使用split

String string = "[a][nice][repetitive][pattern]";
String[] words = string.substring(1, string.length()-1).split("\\]\\[");
System.out.println(Arrays.toString(words));
印刷品

[a, nice, repetitive, pattern]

你能解释一下你的regexp吗?。谢谢。你能解释一下你的正则表达式吗?
String string = "[a][nice][repetitive][pattern]";
String[] words = string.substring(1, string.length()-1).split("\\]\\[");
System.out.println(Arrays.toString(words));
[a, nice, repetitive, pattern]