字符串之间的Java正则表达式在同一行上多次

时间:2014-04-28 16:15:45

标签: java regex

我试图提取`[:: ['和'] ::]'之间的值。我遇到的问题是在同一个字符串中有多个这样的实例,它只是拿起第一个。我的正则表达式的任何帮助?这是我的代码:

示例输入:line = "TEST [::[NAME]::] HERE IS SOMETHING [::[DATE]::] WITH SOME MORE [::[Last]::]";

Pattern p = Pattern.compile("\\[::\\[(.*?)\\]::\\]");
Matcher m = p.matcher(line);
if (m.find()) {
    System.out.println(m.group(1));
}

1 个答案:

答案 0 :(得分:6)

你的正则表达式没问题。你需要做的是循环比赛,Matcher可以匹配几次!

while (m.find())
    System.out.println(m.group(1));

Matcher会在最后一场比赛结束时再试一次(除非您使用\G,但这非常特别)