【问题标题】:Error while using FileUtils使用 FileUtils 时出错
【发布时间】:2015-11-25 10:16:45
【问题描述】:

我正在使用来自 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”中。

【问题讨论】:

    标签: java file fileutils


    【解决方案1】:

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

    这个主题也有一些很好的解释它是如何工作的:Match multiline text using regular expression

    【讨论】:

    • 我想使用这个标志,但现在 (?s) 解决了我的问题。谢谢!
    【解决方案2】:

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

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

    【讨论】:

    • 我也试过这个“(?s)”,它工作正常。无论如何感谢您的建议
    猜你喜欢
    • 2012-10-21
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 2021-07-10
    • 1970-01-01
    相关资源
    最近更新 更多