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

编程教程 > Java (2769) 2024-11-26 14:39:04
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)即可


 

评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
Java正则表达式多行(换行)匹配说明,默认情况下Java正则表达式匹配内容必须是一行得,如果匹配得内容区间存在换行就无法匹配,需要通过一个配置来搞定。Java正则表达式默认匹配内容中含多行示例...
Java正则表达式基础使用及常见正则符号说明,Java正则使用基础参考代码:package org.xqlee.utils.regular;import jav
正则表达式忽略大小写js中使用正则表达式来校验文件格式例如,匹配以下格式支持:doc,docx,xls,xlsx,ppt,pptx,pdf,jpg,jpeg,p
问题描述在使用正则表达式匹配空格字符得时候发现总是匹配失败,后面仔细研究发现空格中包含中文得空格,导致\s无法匹配
正则表达式验证邮箱也可以不填写内容,就是可选项邮箱验证得正则表达式为@Pattern(regexp = "^$|^([0-9A-Za-z\\-_\\.]+)@([0-9a-z]+\\.[a-z]...
java编程中正则表达式'并且'的写法,详细讲解在Java编程语言中正则表达式并且的写法以及Java语言与其他语言写正则有啥区别。
hibernate validator 正则表达式报错HV000030: No validator could be found for constraint 'javax.validation...
Java正则表达式appendReplacement和appendTail替换HTML标签属性值演示HTML数据<!DOCTYPE html&gtl; <html lang="en...
String regex="\\[us\\](?s)((?!\\[/us\\]).)*\\[/us\\]";匹配: [us][/us]之间的所有内容解释:(?s)  匹配忽略\r \n等换行符阻...
1. ([0-9])\1{5} 或 ([\d])\1{5} 连续相同的6位数字 如:333333([0-9a-zA-Z])\1{5} 连续相同的6位数字或字母
在Java的字符串替换中,最近遇到一个问题,就是替换的目标字符串中包含了正则表达式的符号,导致报错。错误示例:public class PatternTest { public sta...
简述由于Spring切面粒度最小是达到方法级别,而execution表达式可以用于明确指定方法返回类型,类名,方法名和参数名等与方法相关的部件,并且在Spring中,大部分需要使用AOP的业务场...
1.引入相关el表达式标签库<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%&gtl;<%@
Java 12(2019 年 3 月 19 日发布)是 JDK 可用的最新版本
在 Spring 框架中,按类型自动装配 bean 允许自动装配属性 -如果容器中只有一个属性类型的 bean。如果有多个,则会抛出一个致命异常,这表明您可能不会byType对该 bean 使用...