多行的正则表达式

时间:2014-01-05 14:44:37

标签: java regex

我有以下代码:

  Matcher matcher = Pattern.compile("<tag 1>(.*?)</tag 1>").matcher(buffer);
  int nr = 0;
  while (matcher.find()) {
         System.out.println("Match no. " + ++nr + ": '" + matcher.group() + "'");
  }

缓冲区在哪里:

  <tag 1>

     My Value

  </tag 1>

如何为我的正则表达式启用多行匹配,以便我可以匹配此缓冲区?谢谢!

1 个答案:

答案 0 :(得分:2)

您需要使用DOTALL标志才能使DOT与换行符匹配:

Matcher matcher = Pattern.compile("(?s)<tag 1>(.*?)</tag 1>").matcher(buffer);

或者其他:

Matcher matcher = Pattern.compile("<tag 1>(.*?)</tag 1>", Pattern.DOTALL)

但我要提醒一下,使用正则表达式解析HTML / XML并不是最好的主意。