使用FileUtils时出错

时间:2015-11-25 10:16:45

标签: java file fileutils

我使用apache commons.io中的FileUtils使用以下代码在文件中的两个字符串之间搜索文本:

Pattern p = Pattern.compile(Pattern.quote(fromDate) + "(.*?)" + Pattern.quote(toDate));

try {
    Matcher m = p.matcher(fileContent);                  
    while (m.find()) {
        System.out.println(m.group(1));

但是只有当两个字符串位于同一行时才会输出错误,如果字符串位于不同的行中则没有输出?在这里,我将整个文件的内容转换为Sting Varibale" fileContent"。

2 个答案:

答案 0 :(得分:0)

点不会搜索多行。您需要为此Pattern.DOTALL提供第二个参数,如下所示: Pattern p = Pattern.compile(Pattern.quote(fromDate) + "(.*?)" + Pattern.quote(toDate), Pattern.DOTALL);

此主题也有一些很好的解释:Match multiline text using regular expression

答案 1 :(得分:0)

尝试用?s结束正则表达式,这样你的新正则表达式应该是: “(。*?S)”

在大多数情况下,匹配器在遇到换行符时停止计算表达式\ n。 当匹配正则表达式时,?s使匹配器通过\ n。