正则表达式匹配Java

时间:2015-10-29 13:57:29

标签: java regex

我正在使用Java Pattern Compile将子字符串与特定模式匹配,并将其添加到List。

我希望正则表达式与以下场景匹配

  1. 字符串的开头和结尾(例如@@ foo,bar,bla @@)
  2. 字符串以" @@开头,以@@"
  3. 结尾
  4. 字符串以Hello" @@开头,以@@",World
  5. 结尾
  6. 字符串以Hello" @@开头,以@@"结尾,//这是评论
  7. 目前的代码是: -

        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 @@]

    任何帮助将不胜感激,我应该如何修改我的模式以适应所有上述情况。

1 个答案:

答案 0 :(得分:3)

在循环执行前调用Matcher.find一次。因此,跳过第一场比赛。如果删除

System.out.println(m.find());

它按预期工作。如果循环后有匹配项,您仍然可以测试:

System.out.println(!matches.isEmpty());