,,Java中Pattern.compile函数的使用详解

,,Java中Pattern.compile函数的使用详解

本文主要介绍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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: