Pattern complie(String regex)
因为Pattern的构造函数是私有的,不能够直接建立,因此经过静态方法compile(String regex)方法来建立,将给定的正则表达式编译并赋予给Pattern类正则表达式
String pattern() 返回正则表达式的字符串形式,其实就是返回Pattern.complile(String regex)的regex参数函数
String regex = "\\?|\\*"; Pattern pattern = Pattern.compile(regex); String patternStr = pattern.pattern();//返回\?\*
Pattern compile(String regex, int flags) 方法功能和compile(String regex)相同,不过增长了flag参数学习
int flags() 返回当前Pattern的匹配flag参数.
flag参数用来控制正则表达式的匹配行为,可取值范围以下:ui
Pattern.CANON_EQ 当且仅当两个字符的”正规分解(canonical decomposition)”都彻底相同的状况下,才认定匹配.好比用了这个标志以后,表达式”a\u030A”会匹配”?”.默认状况下,不考虑”规范相等性(canonical equivalence)”.spa
Pattern.CASE_INSENSITIVE(?i) 默认状况下,大小写不明感的匹配只适用于US-ASCII字符集.这个标志能让表达式忽略大小写进行匹配.要想对Unicode字符进行大小不明感的匹 配,只要将UNICODE_CASE与这个标志合起来就好了..net
Pattern.COMMENTS(?x) 在这种模式下,匹配时会忽略(正则表达式里的)空格字符(译者注:不是指表达式里的”\s”,而是指表达式里的空格,tab,回车之类).注释从#开始,一直到这行结束.能够经过嵌入式的标志来启用Unix行模式.code
Pattern.DOTALL(?s)在这种模式下,表达式’.’能够匹配任意字符,包括表示一行的结束符。默认状况下,表达式’.’不匹配行的结束符.对象
Pattern.MULTILINE(?m)在这种模式下,’\^’和’$’分别匹配一行的开始和结束.此外,’^’仍然匹配字符串的开始,’$’也匹配字符串的结束.默认状况下,这两个表达式仅仅匹配字符串的开始和结束.blog
Pattern.UNICODE_CASE(?u) 在这个模式下,若是你还启用了CASE_INSENSITIVE标志,那么它会对Unicode字符进行大小写不明感的匹配.默认状况下,大小写不敏感的匹配只适用于US-ASCII字符集.索引
Pattern.UNIX_LINES(?d) 在这个模式下,只有’\n’才被认做一行的停止,而且与’.’,’^’,以及’$’进行匹配.
Pattern pattern = Pattern.compile("\\?{2}"); Matcher matcher = pattern.matcher("??"); boolean matches = matcher.matches();// true
String[] split(CharSequence input)
String[] split(CharSequence input, int limit)
String[] split(CharSequence input, int limit)
功能和String[] split(CharSequence input)相同,增长参数limit目的在于要指定分割的段数
String regex = "\\?|\\*"; Pattern pattern = Pattern.compile(regex); String[] splitStrs = pattern.split("123?123*456*456");//123 123 456 456 String[] splitStrs2 = pattern.split("123?123*456*456", 2);// 123 123*456*456
String pattern = Pattern.quote("1252343% 8 567 hdfg gf^$545"); System.out.println("Pattern is : "+pattern);
输出信息:
Pattern is : \Q1252343% 8 567 hdfg gf^$545\E
String regex = "\\?|\\*"; Pattern pattern = Pattern.compile(regex); boolean matches = pattern.matches(regex, "?");//返回true
Pattern pattern = Pattern.compile("\\?{2}"); Matcher matcher = pattern.matcher("??"); boolean matches = matcher.matches();//true System.out.println(matches); matcher=pattern.matcher("?"); matches = matcher.matches();//false System.out.println(matches);
Pattern p = Pattern.compile("\\d+"); Matcher m = p.matcher("22bb23"); boolean match = m.lookingAt();//true System.out.println(match); m = p.matcher("bb2233"); match= m.lookingAt(); System.out.println(match);//false
Pattern p = Pattern.compile("\\d+"); Matcher m = p.matcher("22bb23"); m.find();// 返回true Matcher m2 = p.matcher("aa2223"); m2.find();// 返回true Matcher m3 = p.matcher("aa2223bb"); m3.find();// 返回true Matcher m4 = p.matcher("aabb"); m4.find();// 返回false
Pattern p = Pattern.compile("\\d+"); Matcher m = p.matcher("aa22bb23"); m.find(); int start = m.start();//2 String group = m.group();//22 int end = m.end();//4 System.out.println(start); System.out.println(group); System.out.println(end);
还有一些其余经常使用的方法,请参考API自行学习或者参考其余博客.