【发布时间】:2011-12-31 17:20:22
【问题描述】:
我的电脑上有一个 (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”但它不是。如果我在程序中定义正则表达式,它匹配它。
【问题讨论】:
-
已添加,查看结尾>.
-
new FileReader("filters.txt", "Cp1252")明确指出该文件位于 Windows 代码页 1252 中,即 Latin1 的 Windows 变体。现在它使用操作系统默认值。 -
@JoopEggen:我同意您应该指定编码,但 FileReader 不允许您这样做。您必须使用包裹在 FileInputStream 周围的 InputStreamReader。
标签: java regex readline bufferedreader