Java Regex返回方括号(但不是方括号)之间的字符

Java Regex返回方括号(但不是方括号)之间的字符,java,regex,Java,Regex,我正在寻找一个正则表达式来返回两个方括号之间的所有字符,并且只返回字符,而不是括号本身 例如,给定一个字符串,看起来像“[a][B2][1,1][ABC]” 正则表达式应该返回:A,B2,1,1,ABC 我已经尝试了String#split和Pattern&Match的各种表达式 我得到的最接近的结果是: String.split(“[\[]*[\\]]”) 和 Pattern.compile(“\\[^\\]+(?=])” 两者都返回:[A,[B2,[1,1,[ABC 我还发现了其他返回带有括

我正在寻找一个正则表达式来返回两个方括号之间的所有字符,并且只返回字符,而不是括号本身

例如,给定一个字符串,看起来像
“[a][B2][1,1][ABC]”

正则表达式应该返回:
A
B2
1,1
ABC

我已经尝试了
String#split
Pattern
&
Match
的各种表达式

我得到的最接近的结果是:

String.split(“[\[]*[\\]]”)
Pattern.compile(“\\[^\\]+(?=])”

两者都返回:
[A
[B2
[1,1
[ABC

我还发现了其他返回带有括号的值的表达式(例如,
Pattern.compile(“\\[^\]]*\\]”;
),但这不是我想要的

有人知道正确的表达方式吗?或者我想做的是不可能的吗?

你可以用这个

(?<=\\[).*?(?=\\])
Pattern.compile("\\[(.*?)\\]");
您所需要的只是保留所需图案的一部分

String s  = "[A][B2][1,1][ABC]";
Pattern p = Pattern.compile("\\[([^]]*)]");
Matcher m = p.matcher(s);
while (m.find()) {
  System.out.println(m.group(1));
}

不,我已经试过了。它是返回包括括号在内的值的函数之一,这不是我想要的,你需要得到组(1)而不是组(0)。你不需要四处张望。那很快!我用
模式测试了这两种模式,它们都很好地处理了我的测试数据。我会的,但有一个计时器:plol,我不是其中之一……我勾选了那些提供正确答案的:)我也不喜欢那些从不勾选答案的代码!你真的试过那个代码吗?我刚刚运行了它,结果返回了输出是用括号括起来的!对不起,你是对的:)但是vks快了一点。
String s  = "[A][B2][1,1][ABC]";
Pattern p = Pattern.compile("\\[([^]]*)]");
Matcher m = p.matcher(s);
while (m.find()) {
  System.out.println(m.group(1));
}