pattern.compile,Pattern p = Pattern.compile("((.)2#)");括号里面什么意思
大家好,感谢邀请,今天来为大家分享一下pattern.compile的问题,以及和Pattern p = Pattern.compile("((.)\\2*)");括号里面什么意思的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
java.util.regex中的pattern 和 matcher的用法
Pattern和Matcher Pattern一个Pattern是一个正则表达式经编译后的表现模式。 Matcher一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作。用法如下:
(字符串:"abc",正则表达式:"[a-z]{3}")
String类的方法:
booleanb="abc".matches("[a-z]{3}"
System.out.println(b);
Pattern类中的方法:
booleanb=Pattern.matches("[a-z]{3}","abc");
System.out.println(b);
Matcher类中的方法:
Patternp=Pattern.compile("[a-z]{3}");
Matcherm=p.matcher("acc");
booleanb=m.matches()
System.out.println(b);
得到的结果都为true。
Pattern p = Pattern.compile("((.)\\2*)");括号里面什么意思
来晚了我详细解释下吧啊
首先你得理解正则里“组(Group)”的概念
简单的来说就是"()"里的匹配就是一个组组有序号从1开始到n可以在表达式里做引用虽然组可以无限多但引用只能从1-9共 9个
序号也是有规律的每遇到一个"("组的序号+1也就是说\\2代表的是.这个组的引用
.代表任意字符(除过“换行符”)*代表0-无限多所以这个表达式的意思是
匹配单一个或多个连续的字符给你个例子体会下
Pattern p= Pattern.compile("((.)\\2*)");
String s="122aa,,,, s09";
Matcher m=p.matcher(s);
while(m.find()){
System.out.println("{"+m.group()+"}");
}
...Pattern类中的类方法(静态方法)compile(String regex
编译标志
效果
Pattern.CANON_EQ当且仅当两个字符的"正规分解(canonical decomposition)"都完全相同的情况下,才认定匹配。比如用了这个标志之后,表达式"a/u030A"会匹配"?"。默认情况下,不考虑"规范相等性(canonical equivalence)"。
Pattern.CASE_INSENSITIVE
(?i)默认情况下,大小写不明感的匹配只适用于US-ASCII字符集。这个标志能让表达式忽略大小写进行匹配。要想对Unicode字符进行大小不明感的匹配,只要将UNICODE_CASE与这个标志合起来就行了。
Pattern.COMMENTS
(?x)在这种模式下,匹配时会忽略(正则表达式里的)空格字符(注:不是指表达式里的"//s",而是指表达式里的空格,tab,回车之类)。注释从#开始,一直到这行结束。可以通过嵌入式的标志来启用Unix行模式。
Pattern.DOTALL
(?s)在这种模式下,表达式'.'可以匹配任意字符,包括表示一行的结束符。默认情况下,表达式'.'不匹配行的结束符。
Pattern.MULTILINE
(?m)在这种模式下,'^'和'$'分别匹配一行的开始和结束。此外,'^'仍然匹配字符串的开始,'$'也匹配字符串的结束。默认情况下,这两个表达式仅仅匹配字符串的开始和结束。
Pattern.UNICODE_CASE
(?u)在这个模式下,如果你还启用了CASE_INSENSITIVE标志,那么它会对Unicode字符进行大小写不明感的匹配。默认情况下,大小写不明感的匹配只适用于US-ASCII字符集。
Pattern.UNIX_LINES
(?d)在这个模式下,只有'/n'才被认作一行的中止,并且与'.','^',以及'$'进行匹配。
Pattern和Matcher具体的用法
Pattern是一个正则表达式经编译后的表现模式。Matcher一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。
首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作。
关于本次pattern.compile和Pattern p = Pattern.compile("((.)\\2*)");括号里面什么意思的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。