我正在寻找一个RegEx来返回两个方括号之间的所有字符,只返回字符,而不是括号本身。
例如,给定一个类似于"[A][B2][1,1][ABC]"
RegEx应该返回:A
,B2
,1,1
,ABC
我为String#split
和Pattern
&尝试了各种表达方式。 Match
。
我最接近的是:
String.split("[\\[]*[\\]]");
和
Pattern.compile("\\[[^\\]]+(?=])");
这两个都返回:[A
,[B2
,[1,1
,[ABC
我发现其他表达式使用括号括起来返回值(即Pattern.compile("\\[[^\\]]*\\]");
),但这不是我所追求的。
有人知道正确的表达吗?或者我正在努力做不到的事?
答案 0 :(得分:2)
(?<=\\[).*?(?=\\])
您需要lookaheads
和lookbehinds
。或
(?<=\\[)[^\\]]*(?=\\])
答案 1 :(得分:1)
您只需capturing group即可保留所需模式的一部分。
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));
}
答案 2 :(得分:0)
你可以使用它。
Pattern.compile("\\[(.*?)\\]");