Java正则表达式多行(换行)匹配

说明,默认情况下Java正则表达式匹配内容必须是一行得,如果匹配得内容区间存在换行就无法匹配,需要通过一个配置来搞定。
 

Java正则表达式默认匹配内容中含多行示例

public class Test {
    public static void main(String[] args) {
        String content = FileUtil.readUtf8String("d:/test/1.txt");
        System.out.println("===================>内容开始");
        System.out.println(content);
        System.out.println("===================>内容结束");
        Matcher matcher1 = Pattern.compile("AA.*BB").matcher(content);
        System.out.println("默认查找结果:"+matcher1.find());
    }
}

执行输出结果为:
===================>内容开始
我是第一行

我是空行AA

 我是第二行


文本末尾了。。。BB
===================>内容结束
默认查找结果:false

可以看到要匹配AA到BB中间得所有内容,但是有换行导致最终匹配结果为false,也就是没匹配上。

 

Java正则表达式开启多行内容匹配

public class Test {
    public static void main(String[] args) {
        String content = FileUtil.readUtf8String("d:/test/1.txt");
        System.out.println("===================>内容开始");
        System.out.println(content);
        System.out.println("===================>内容结束");
        Matcher matcher1 = Pattern.compile("AA.*BB").matcher(content);
        System.out.println("默认查找结果:"+matcher1.find());
        Matcher matcher2 = Pattern.compile("(?s)AA.*BB").matcher(content);
        System.out.println("多行匹配查找结果:"+matcher2.find());
    }
}
执行结果:
===================>内容开始
我是第一行

我是空行AA

 我是第二行


文本末尾了。。。BB
===================>内容结束
默认查找结果:false
多行匹配查找结果:true

开启多行内容匹配只需要在正则表达式前面添加(?s)即可


 

评论区域