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,也就是没匹配上。
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)即可
https://www.leftso.com/article/1030.html