本文主要介绍Java中Pattern.compile函数的详细使用说明,具有很好的参考价值。希望对你有帮助。如有错误或不足之处,请不吝赐教。
目录
还有另一个版本的Java Pattern.com堆函数的compile()方法使用了模式类:flag来自下面模式类中的常量:我们可以使用pattern.com(?)对于用or组合多个标记的函数(|)x的例子):Pattern.compile函数的相关解释。标志的取值范围如下:
Java Pattern.compile函数的使用
除了pattern pattern . pile(string regex),
Pattern类的compile()方法还有另一个版本:
pattern . compile(string regex,int flag),它接受一个flag参数来调整匹配行为。
flag来自以下Pattern类中的常量:
编译标记
影响
模式。佳能_情商
当且仅当两个字符的完全规范分解匹配时,才认为这两个字符匹配。例如,如果我们指定这个标签,表达式a\u030A将匹配字符串?默认情况下,匹配不考虑规格的等效性。
模式。不区分大小写(?我)
默认情况下,不区分大小写的匹配假定只能匹配US-ASCII字符集中的字符。这个标签允许模式匹配,无论大小写。通过指定UNICODE_CASE标记并组合此标记,可以启动基于UNICODE的不区分大小写的匹配,或者使用嵌入的标记表达式?我,下同
模式。评论(?x)
在这种模式下,表达式中的空格(不是\s,只是空格)将被忽略,从#开始直到行尾的注释也将被忽略。嵌入的标记表达式也可以打开Unix行模式。
模式。DOTALL(?s)
在dotall模式下,表达式“.”匹配所有字符,包括行结束符。默认情况下,“”表达式与行结束符不匹配。
模式。MULTLINE(?m)
在多行模式下,表达式$和$分别匹配一行或输入字符串的开头和结尾。默认情况下,这些表达式只匹配输入的完整字符串的开头和结尾。
模式。UNICODE_CASE(?u)
当指定此标志并打开CASE_INSENSITIVE时,不区分大小写的匹配将以与Unicode标准一致的方式执行。默认情况下,不区分大小写的匹配假定只能匹配US-ASCII字符集中的字符。
模式。UNIX_LINES(?d)
在这种模式下,在中只能识别行终止符。和$行为\n
在这些标签中。不区分大小写(?我),格局。MULTLINE(?m),==格局。评论(?X)==特别有用。
使用示例如下:
我们可以通过“或”( | )操作组合多个标记的功能
导入Java . util . regex . matcher;
导入Java . util . regex . pattern;
公共类重新标记{
公共静态void main(String[] args) {
图案p=pattern.compile('^java',pattern.不区分大小写|模式。多线);
/*
*使用模式。不区分大小写(不区分大小写的匹配)和模式。MULTILINE (multiline pattern)标签匹配所有以java开头的行,不区分大小写。
*/
Matcher m=p.matcher('java有regex\nJava有regex\n '
JAVA有很好的正则表达式\n '
正则表达式在JavA中’);
while (m.find()) {
system . out . println(m . group());//输出匹配的部分
}
}
}
输出结果:
Java语言(一种计算机语言,尤用于创建网站)
Java 语言(一种计算机语言,尤用于创建网站)
Java语言(一种计算机语言,尤用于创建网站)
使用Pattern.COMMENTS(?x)的例子:
导入Java . util . regex . matcher;
导入Java . util . regex . pattern;
公共类ReFlags_Comments {
公共静态void main(String[] args) {
/*
*不要使用模式。评论(不要开始评论)
*/
字符串s=' 123
pattern P1=pattern . compile((\ \ d)# test comments ');
匹配器m1=P1 . matcher(s);
system . out . println(m1 . matches());//假
/*
*在正则表达式中使用启动注释的标签。
*/
Pattern p2=Pattern.compile((?x)(\ \ d)#测试注释');
匹配器m2=p2 . matcher(s);
system . out . println(m2 . matches());//真
/*
*使用模式。开始注释的参数中的注释。
*/
模式P3=Pattern . compile((\ \ d)# test comments),模式。评论);
匹配器m3=P3 . matcher(s);
system . out . println(m3 . matches());//真
}
}
运行结果:
错误的
真实的
真实的
Pattern.compile函数的相关解释
模式.编译函数:
Pattern Pattern.compile(字符串正则表达式,int标志)
flag的取值范围如下:
模式。CANON_EQ:当且仅当两个字符的“规范分解”相同时,才认为匹配。例如,使用此符号后,表达式“a\u030A”将匹配“?”。默认情况下,不考虑“规范等价”。
模式。CASE_INSENSITIVE:默认情况下,不区分大小写的匹配仅适用于US-ASCII字符集。此标志允许表达式不区分大小写进行匹配。要匹配大小未知的Unicode字符,只需将UNICODE_CASE与此标志结合使用。
模式。备注:在这种模式下,匹配时会忽略空格字符(在正则表达式中)(不是表达式中的' \\s ',而是表达式中的空格、制表符、回车等)。注释从#开始,一直到本行结束。Unix线路模式可以通过嵌入标志来启用。
模式。DOTALL:在这种模式下,表达式“.”可以匹配任何字符,包括表示一行的终止符。默认情况下,表达式“.”与行结束符不匹配。
模式。MULTILINE:在这种模式下,''和' $ '分别匹配一行的开始和结束。此外,''仍然匹配字符串的开头,' $ '也匹配字符串的结尾。默认情况下,这两个表达式只匹配字符串的开头和结尾。
模式。UNICODE_CASE:在这种模式下,如果您还启用了CASE_INSENSITIVE标志,它将匹配不区分大小写的UNICODE字符。默认情况下,不区分大小写的匹配仅适用于US-ASCII字符集。
模式。UNIX_LINES(?d)在这种模式下,只有' \n '被识别为一行的结束,它与'.'匹配、“”和“$”。
以上个人经历,希望能给大家一个参考,也希望大家多多支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。