1.所用到的正则表达式,都在java.util.regex包中的pattern类中,下面是常用的字符匹配:
1.常用的字符类匹配如下
2.怎样使用正则表达式。
1.指定为字符串的正则表达式必须首先被比编译为此类的实例。然后,可将得到的模式用于创建Matcher对象,依照正则表达式,该对象可以与任意字符序列匹配,执行匹配所涉及的所有状态都驻留在匹配器中,所有 的匹配器可以共用同一种模式。最典型的调用顺序是:
Pattern p =Pattern.compile("a*b");
Matcher m =p.matcher("aaaaaab");
boolean b =m.mathcher();
注: Pattern类是正则操作的最重要的一个类(主要是定义规范并进行字符串拆分工作),所有正则规范都要在Pattern类中进行指定,此类常用方法如下:
1、compile(String regex)方法,返回值为Pattern对象
2、matcher(CharSquence input) 方法,返回值为Matcher对象
3、split(CharSquence input)方法,返回值为String数组类型
4、pattern()方法,返回值使用的正则表达式。
例题:把字符串ab233daad32ddd54434da434,中的数字去除。代码如下:
package com.regex.practise; import java.util.regex.Pattern; public class RegexDemo2 { public static void main(String[] args) { String str="ab233daad32ddd54434da434"; Pattern p =Pattern.compile("\\d+"); String c[]=p.split(str); for(int x=0;x<c.length;x++){ System.out.print(c[x]); } }//结果abdaaddddda }2、Matcher 类主要是进行验证和替换功能的操作。主要的方法如下:
①matchers()方法,返回值类型为boolean
②replaceAll(String replacement)方法,返回值为String类型
③replaceFirst(String replacement)方法,返回值为String类型。
例题:进行字符串额验证,是否符合”xxx-xx-xxx“形式,代码如下:
package com.regex.practise; import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexDemo3 { public static void main(String[] args) { String str="111-22-333";//定义字符串 String pat="\\d{3}-\\d{2}-\\d{3}"; Pattern p=Pattern.compile(pat); Matcher m=p.matcher(str); if(m.matches()){ System.out.println("验证合法"); }else { System.out.println("验证不合法"); } } }
2.String类对正则的支持(重点)
①matchers(String regex)方法,返回值类型为boolean类型。
②replaceAll(String regex,String replacement)方法,返回值为String类型。
③replaceFirst(String regex,String replacement)方法,返回值为String类型
④split(String regex)方法,返回值类型为String数组类型。
注:在开发中如果要想使用正则,基本上都是直接应用String类,很少去直接使用pattern类或者matcher类。代码如下:
package com.regex.practise; import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexDemo2 { public static void main(String[] args) { String str="ab233daad32ddd54434da434"; Pattern p =Pattern.compile("\\d+"); //替换方法一,用matcher类 Matcher m=p.matcher(str); String str1 =m.replaceAll("※"); System.out.println(str1);//结果ab※daad※ddd※da※ System.out.println(); //方法二用String类 String str2=str.replaceAll("\\d+","※");//结果 ab※daad※ddd※da※ System.out.println(str2); } }
例题:验证邮箱是否合法,代码如下:
package com.regex.practise;
public class Stringregex2 {
public static void main(String[] args) {
String email="dui1cuo@126.com";
boolean x=email.matches("\\S+@+\\S+.(com|com.cn|net.cn|cn|net|edu)");
System.out.println(x);//true,\S表示非空白字符
}
}
注:正则表达式可以方便的完成验证的操作,是一组标准性的规范,在各种语言中都可以使用。