Java重复模式匹配。

| 我正在尝试获取Java中一个简单正则表达式的每个重复匹配项:
(\\\\[[^\\\\[]*\\\\])*
只要不包含[字符,它就匹配[]中包含的任何字符串。例如,它将匹配
[a][nice][repetitive][pattern]
没有关于存在多少个这样的组的先验知识,我找不到通过模式匹配器访问各个匹配组的方法,即无法获得
[a], [nice], [repetitive], [pattern]
(或什至更好的是不带括号的文本),使用4个不同的字符串。 使用pattern.matcher()我总是得到最后一组。 当然,在Java中肯定有一种简单的方法可以实现这一点,而我所缺少的呢? 谢谢你的帮助。     
已邀请:
        
while (matcher.find()) {
   System.out.println(matcher.group(1));
}
http://download.oracle.com/javase/6/docs/api/java/util/regex/Matcher.html#find%28%29     
        
    String string = \"[a][nice][repetitive][pattern]\";
    String regexp = \"\\\\[([^\\\\[]*)\\\\]\";
    Pattern pattern = Pattern.compile(regexp);
    Matcher matcher = pattern.matcher(string);
    while (matcher.find()) {
        System.out.println(matcher.group(1));
    }
    
        我会用分裂
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]
    
        这是我的尝试:)
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Foo {
    public static void main(String[] args) {
        final String text = \"[a][nice][repetitive][pattern]\";
        System.out.println(getStrings(text)); // Prints [a, nice, repetitive, pattern]
    }

    private static final Pattern pattern = Pattern.compile(\"\\\\[([^\\\\]]+)]\");

    public static List<String> getStrings(final String text) {
        final List<String> strings = new ArrayList<String>();
        final Matcher matcher = pattern.matcher(text);
        while(matcher.find()) {
            strings.add(matcher.group(1));
        }
        return strings;
    }

}
    

要回复问题请先登录注册