正则表达式

 

 

   Pattern类用于创建一个正则表达式,创建一个匹配模式,构造方法是私有的,不可以直接创建,但可以通过Pattern.complie(String regex)简单工厂方法创建一个正则表达式, 
Java代码示例: 

Pattern p=Pattern.compile("\\w+"); 
p.pattern();//返回 \w+ 

  pattern() 返回正则表达式的字符串形式,其实就是返回Pattern.complile(String regex)的regex参数

Pattern.split(CharSequence input)

  Pattern有一个split(CharSequence input)方法,用于分隔字符串,并返回一个String[]。

Pattern p=Pattern.compile("\\d+"); 
String[] str=p.split("我的QQ是:456456我的电话是:0532214我的邮箱是:aaa@aaa.com");

  结果:str[0]="我的QQ是:" str[1]="我的电话是:" str[2]="我的邮箱是:aaa@aaa.com" 

  Pattern.matcher(String regex,CharSequence input)是一个静态方法,用于快速匹配字符串,该方法适合用于只匹配一次,且匹配全部字符串

  Pattern.matcher(CharSequence input)返回一个Matcher对象,Matcher类的构造方法也是私有的,不能随意创建,只能通过Pattern.matcher(CharSequence input)方法得到该类的实例. 

  matches()对整个字符串进行匹配,只有整个字符串都匹配了才返回true 

Pattern p=Pattern.compile("\\d+"); 
Matcher m=p.matcher("22bb23"); 
m.matches();      //返回false,因为bb不能被\d+匹配,导致整个字符串匹配未成功. 
Matcher m2=p.matcher("2223"); 
m2.matches();    //返回true,因为\d+匹配到了整个字符串

  lookingAt()对前面的字符串进行匹配,只有匹配到的字符串在最前面才返回true 

Pattern p=Pattern.compile("\\d+"); 
Matcher m=p.matcher("22bb23"); 
m.lookingAt();    //返回true,因为\d+匹配到了前面的22 
Matcher m2=p.matcher("aa2223"); 
m2.lookingAt();   //返回false,因为\d+不能匹配前面的aa 

  find()对字符串进行匹配,匹配到的字符串可以在任何位置. 

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

限定符定义了一个元素可以发生的频率。

  • 在匹配 . 或 { 或 [ 或 ( 或 ? 或 $ 或 ^ 或 * 这些特殊字符时,需要在前面加上 \\,比如匹配 . 时,Java 中要写为 \\.,但对于正则表达式来说就是 \.
  • 在匹配 \ 时,Java 中要写为 \\\\,但对于正则表达式来说就是 \\

 

  • [jpg|png] 代表匹配 j 或 p 或 g 或 p 或 n 或 g 中的任意一个字符。
  • (jpg|png) 代表匹配 jpg 或 png

参考:

 

posted on 2018-11-06 13:59  溪水静幽  阅读(107)  评论(0)    收藏  举报