我正在使用Java Pattern Compile将子字符串与特定模式匹配,并将其添加到List。
我希望正则表达式与以下场景匹配
目前的代码是: -
List<String> matches = new ArrayList<String>();
Matcher m = Pattern.compile("@@([^@@]*)@@")
.matcher(content);
System.out.println(m.find());
while (m.find()) {
matches.add(m.group());
}
我的内容为'<script> var bookSrc = "@@book:URL@@",var books_count: @@Count@@, var active = true</script>'
以上代码仅匹配@@之间的字符串,实际结果为[@@ count @@],我希望结果为[@@ book:URL @@,@@ count @@]
任何帮助将不胜感激,我应该如何修改我的模式以适应所有上述情况。
答案 0 :(得分:3)
在循环执行前调用Matcher.find
一次。因此,跳过第一场比赛。如果删除
System.out.println(m.find());
它按预期工作。如果循环后有匹配项,您仍然可以测试:
System.out.println(!matches.isEmpty());