【发布时间】:2014-11-30 17:25:25
【问题描述】:
我在括号内得到 java 代码的输出,我需要检索每个关键字 在括号内?
输出显示:
[Eiwitten, 4,8, g]
从此我需要检索每个关键字,例如:
Eiwitten
4,8
g
那么请帮助我,如何在java编码中解决?
提前致谢!!
【问题讨论】:
-
\[(.+)\]然后split?
我在括号内得到 java 代码的输出,我需要检索每个关键字 在括号内?
输出显示:
[Eiwitten, 4,8, g]
从此我需要检索每个关键字,例如:
Eiwitten
4,8
g
那么请帮助我,如何在java编码中解决?
提前致谢!!
【问题讨论】:
\[(.+)\] 然后split?
试试这个。
String str ="[Eiwitten, 4,8, g]";
str = str.replaceAll("\\[", "");
str = str.replaceAll("\\]", "");
String[] split = str.split(", ");
for(int r = 0 ; r <split.length ; r++){
System.out.println(split[r]);
}
【讨论】:
Maroun Maroun 建议的方式简单高效,您可以使用它,但使用这种模式:\\[([^]]+)]
如果你想使用单一模式:
(?:\\G(?!\\A)|\\[(?=[^]]*]))(.+?)(?:, |(?=]))
如果你知道方括号是平衡的,你可以缩短:
(?:\\G(?!\\A)|\\[)(.+?)(?:, |(?=]))
注意:这两种模式不允许空项目。
【讨论】:
你也可以使用这个模式来捕获", "之间的文本
, |([^\]\[]+?)(?=, |\])
, # ", "
| # OR
( # Capturing Group (1)
[^\]\[] # Character not in [^\]\[]
+? # (one or more)(lazy)
) # End of Capturing Group (1)
(?= # Look-Ahead
, # ", "
| # OR
\] # "]"
) # End of Look-Ahead
【讨论】: