正则表达式Pattern的标记

编译标记 效果

Pattern.CANON_EQ 两个字符当且仅当它们的完全规范分解相匹配时,就认为它们是匹配的。例如,如果我们指定这个标记,表达式a\u030A就会匹配字符串?。在默认的情况下,匹配不考虑规范的等价性。

Pattern.CASE_INSENSITIVE(?i) 默认情况下,大小写不敏感的匹配假定只有US-ASCII字符集中的字符才能进行。这个标记允许模式匹配不必考虑大小写(大写或小写)。通过指定UNICODE_CASE标记及结合此标记。基于Unicode的大小写不满干的匹配就可以开启了。

Pattern.COMMENTS(?x) 在这种模式下,空格符将被忽略掉,并且以#开始直到行末的注释也会被忽略掉。通过嵌入的标记表达式也可以开启Unix的航模式

Pattern.DOTALL(?s) 在dotall模式中,表达式"." 匹配所有字符,包括终结符。默认情况下,”." 表达式不匹配行终结符。

Pattern.MULTILINE(?m) 在多行模式下,表达式^和$分别匹配一行的开始和结束。^还匹配输入字符串的开始,而$还匹配输入字符串的结尾。默认情况下,这些表达式仅匹配输入的完整字符串的开始和结束。

Pattern.UNICODE_CASE(?u) 当指定这个标记, 并且开启CASE_INSENSITIVE时,大小写不敏感的匹配将按照与Unicode标准相一致的方式进行。默认情况下,大小写不敏感的匹配假定只能在US-ASCII 字符集中的字符才能进行

Pattern.UNIX_LINES(?d) 在这种模式下,在., ^和$行为中, 只识别行终结符\n



例子

import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class ReFlags {
public static void main(String[] args) {
Pattern p = Pattern.compile("^java",Pattern.CASE_INSENSITIVE|Pattern.MULTILINE);
Matcher m = p.matcher(
"java has regex\nJava has regex\n" + 
"JAVA has pretty good regular expressions\n" +
"Regular expressions are in Java");
while(m.find()) {
System.out.println(m.group());
}
}
}


输出:

java
Java
JAVA

在这个例子中,我们创建了一个模式,它将匹配所有以“java”,“Java” 和 ”JAVA“等开头的行,并且是在设置了多行的状态下, 对每一行(从字符序列的第一个

字符开始,至每一个行终结符)都进行匹配。注意,group()方法只返回以匹配的部分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值