需要帮助解析括号[]
中包含关键字的行。
我试过但结果不对:
public class App {
public static void main(String[] args) {
Matcher mtr = Pattern.compile("(\\w+-\\w+|\\w+)+").matcher("[foo-bar] [baz][qux]");
if (mtr.find()) for (int i = 0; i < mtr.groupCount(); i++) {
System.out.println(mtr.group(i));
}
}
}
FOO杆
foo-bar
baz
qux
解析字符串应该是什么正则表达式,如上一个例子?
答案 0 :(得分:1)
只需尝试使用String#split()
方法。
String str = "[foo-bar] [baz][qux]";
String[] array = str.substring(1, str.length() - 1).split("\\]\\s*\\[");
答案 1 :(得分:1)
试试这个
Matcher mtr = Pattern.compile("[\\w-]+").matcher("[foo-bar] [baz][qux]");
while(mtr.find()) {
System.out.println(mtr.group());
}
答案 2 :(得分:1)
而不是if (mtr.find())
:
while (mtr.find())
for (int i = 0; i < mtr.groupCount(); i++) {
System.out.println(mtr.group(i));
}
即。你需要在循环中调用matcher#find()
以返回全局匹配。
答案 3 :(得分:1)
只要您的括号无法嵌套,您就可以尝试使用正则表达式
\[([^\]]*)\]
并提取第一个捕获组。
那是:
Matcher mtr = Pattern.compile("\\[([^\\]]*)\\]").matcher("[foo-bar] [baz][qux]");
while (mtr.find())
System.out.println(mtr.group(1));
foo-bar baz qux
答案 4 :(得分:1)
试试这个视网膜表达式
\[[^\[\]]*\]
http://rubular.com/r/heMGeTMjuB
或者,这个类似,并将"[foo[bar]"
之类的内容解析为foo[bar
\[(.*?)\]