Readline和正则表达式匹配问题

时间:2011-12-31 17:20:23

标签: java regex readline bufferedreader

我的计算机上有一个(ANSI)文本文件(filters.txt),每行都是一个正则表达式。

在我的主要内容中,我循环播放RSS提要;每个项目都传递给另一个方法来检查filters.txt中的匹配项。

问题似乎没有什么匹配。

  • 我传递给方法的字符串是正确的(已测试)
  • 我的正则表达式是正确的(已测试)
  • 来自filters.txt的输入“似乎”与文本文件
  • 中的相同
  • 也许换行或其他东西搞砸了模式匹配?我是否需要使用其他工具来读取文本文件才能完成此操作?

这是我方法的代码:

public static boolean filtermatch(String rsstitle) {
    boolean result = false;

      try {
          BufferedReader br = new BufferedReader(new FileReader("filters.txt"));
          String strLine;

          while ((strLine = br.readLine())!= null && result == false) {
              if(Pattern.matches("(?i)" + strLine, rsstitle)) {
                  result = true;
              }
          }   
          br.close();
      } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
      }

    return result;
}

编辑: 我现在只有过滤器:

\\[HorribleSubs\\].*Chihayafuru.*

应该匹配“[HorribleSubs] Chihayafuru - 12 [720p] .mkv”但它不是。如果我在程序中定义正则表达式,它会匹配它。

1 个答案:

答案 0 :(得分:2)

不要在文件中放入双反斜杠:Java会在“\\\\”中对它们进行转换。它读取一个反斜杠,如“\\”。