我需要用正则表达式在java中拆分一个字符串,但我不太清楚如何。我必须拆分
[Caps][RCaps]C[Caps][RCaps]atalog[Caps][RCaps]
通过方括号内的文字。我不知何故需要得到字符串的所有部分。
预期产出:
[Caps]
[RCaps]
C
[Caps]
[RCaps]
atalog
[Caps]
[RCaps]
方括号内的文字可以是任何内容。在这种情况下,它是“Caps”和“RCaps”,但它也可以是“Potato”,例如
答案 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)
答案 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 + "]");
}
}