java多行模式_Java中正则表达式(regex)匹配多行(Pattern.MULTILINE和Pattern.DOTALL模式)

本文详细介绍了Java中正则表达式的多行匹配模式,包括Pattern.MULTILINE模式如何使^和$匹配所有行,以及Pattern.DOTALL模式如何使点(.)匹配包括换行符在内的所有字符。通过实例代码展示了这两种模式的使用及组合应用,帮助理解在复杂场景下如何正确匹配多行文本。
摘要由CSDN通过智能技术生成

1、Pattern.MULTILINE模式的用法

正则表达式中出现了^或者$, 默认只会匹配第一行. 设置了Pattern.MULTILINE模式,会匹配所有行。例如,Pattern p1 = Pattern.compile("^.*b.*$");

//输出false,因为正则表达式中出现了^或$,默认只会匹配第一行,第二行的b匹配不到。

System.out.println(p1.matcher("a\nb").find());

Pattern p2 = Pattern.compile("^.*b.*$",Pattern.MULTILINE);

//输出true,指定了Pattern.MULTILINE模式,就可以匹配多行了。

System.out.println(p2.matcher("a\nb").find());

2、Pattern.DOTALL模式的用法

默认情况下, 正则表达式中点(.)不会匹配换行符, 设置了Pattern.DOTALL模式, 才会匹配所有字符包括换行符。例如,Pattern p1 = Pattern.compile("a.*b");

//输出false,默认点(.)没有匹配换行符

System.out.println(p1.matcher("a\nb").find());

Pattern p2 = Pattern.compile("a.*b", Pattern.DOTALL);

//输出true,指定Pattern.DOTALL模式,可以匹配换行符。

System.out.println(p2.matcher("a\nb").find());

3、同时指定Pattern.MULTILINE和Pattern.DOTALL模式

实际情况中要是比较复杂的情况,可能Pattern.MULTILINE模式和Pattern.DOTAL模式需要同时指定来匹配多行,下面看一下,Pattern p1 = Pattern.compile("^a.*b$");

//输出false

System.out.println(p1.matcher("cc\na\nb").find());

Pattern p2 = Pattern.compile("^a.*b$", Pattern.DOTALL);

//输出false,因为有^或&没有匹配到下一行

System.out.println(p2.matcher("cc\na\nb").find());

Pattern p3 = Pattern.compile("^a.*b$", Pattern.MULTILINE);

//输出false,匹配到下一行,但.没有匹配换行符

System.out.println(p3.matcher("cc\na\nb").find());

//指定多个模式,中间用|隔开

Pattern p4 = Pattern.compile("^a.*b$", Pattern.DOTALL|Pattern.MULTILINE);

//输出true

System.out.println(p4.matcher("cc\na\nb").find());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值