Java通过正则表达式拆分字符串

时间:2015-03-01 18:21:05

标签: java regex

我需要用正则表达式在java中拆分一个字符串,但我不太清楚如何。我必须拆分

[Caps][RCaps]C[Caps][RCaps]atalog[Caps][RCaps]

通过方括号内的文字。我不知何故需要得到字符串的所有部分。

预期产出:

[Caps]
[RCaps]
C
[Caps]
[RCaps]
atalog
[Caps]
[RCaps]

方括号内的文字可以是任何内容。在这种情况下,它是“Caps”和“RCaps”,但它也可以是“Potato”,例如

4 个答案:

答案 0 :(得分:3)

您需要做的是在[字符之前和]字符之后拆分,这会转换为正则表达式(?=\\[)|(?<=\\])

示例:

String string = "[Caps][RCaps]C[Caps][RCaps]atalog[Caps][RCaps]";
String[] result = string.split("(?=\\[)|(?<=\\])");
System.out.println(Arrays.toString(result));

打印:

[[Caps], [RCaps], C, [Caps], [RCaps], atalog, [Caps], [RCaps]]

答案 1 :(得分:1)

"[""]"是正则表达式匹配的字符,称为元字符。您需要在它之前添加转义字符。 \\[\\]

你需要尝试这样的事情:

String str = "[Caps][RCaps]C[Caps][RCaps]atalog[Caps][RCaps]";
Pattern pattern = Pattern.compile("\\[?(\\w)+\\]?");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
    System.out.print(matcher.group());
}
  

输出:

     

[Caps] [RCaps] C [Caps] [RCaps] atalog [Caps] [RCaps]

答案 2 :(得分:1)

而不是拆分,您可以使用此模式捕获您想要的内容

(\[[^][]*\]|[^][]+)  

Demo

答案 3 :(得分:1)

试试这个。

 String string = "[Caps][RCaps]C[Caps][RCaps]atalog[Caps][RCaps]";
        String[] split = string.split("\\]");
        for (String string1 : split) {
            if (string1.charAt(0) != '[') {
                int indexOf = string1.indexOf("[");
                String substring = string1.substring(0, indexOf);
                String substring1 = string1.substring(indexOf, string1.length()) + "]";
                System.out.println(substring);
                System.out.println(substring1);
            } else {
                System.out.println(string1 + "]");
            }
        }
相关问题