《Java常用类库——正则表达式.doc》由会员分享,可在线阅读,更多相关《Java常用类库——正则表达式.doc(8页珍藏版)》请在金锄头文库上搜索。
1、Java常用类库正则表达式分类:Java编程2011-08-23 09:46255人阅读评论(-1)收藏举报为什么要有正则正则表达式可以方便的对数据进行匹配,可以执行更加复杂的字符串验证、拆分、替换功能。例如:现在要求判断一个字符串是否由数字组成,则可以有以下两种做法:1.不使用正则完成2.使用正则完成1.以验证字符串是否由数字组成为例:javaview plaincopy1. publicclassRegexDemo012. publicstaticvoidmain(Stringargs)3. Stringstr=1234567890;/此字符串由数字组成4. booleanflag=tru
2、e;/定义一个标记变量5. /要先将字符串拆分成字符数组,之后依次判断6. charc=str.toCharArray();/将字符串变为字符数组7. for(inti=0;ic.length;i+)/循环依次判断8. if(ci9)/如果满足条件,则表示不是数字9. flag=false;/做个标记10. break;/程序不再向下继续执行11. 12. 13. if(flag)14. System.out.println(是由数字组成!);15. else16. System.out.println(不是由数字组成!);17. 18. 19. ;基本思路:就是将字符串拆分,之后一个个的进行
3、比较的验证,但是这样比较麻烦,而且现在只是验证是否由数字组成,如果更加复杂的呢?此时,如果将代码换成正则表达式,再观察效果:2:认识正则javaview plaincopy1. importjava.util.regex.Pattern;2. publicclassRegexDemo023. publicstaticvoidmain(Stringargs)4. Stringstr=1234567890;/此字符串由数字组成5. if(Ppile(0-9+).matcher(str).matches()/使用正则6. System.out.println(是由数字组成!);7. else8. S
4、ystem.out.println(不是由数字组成!);9. 10. 11. ;以上的代码也完成了字符串的验证功能,可以发现,使用此种验证方法比之前的操作代码更加简单。3.Pattern、Matcher 类这两个类为正则的核心操作类。d:表示数字,0-9D:表示非数字,0-9w:表示字母、数字、下划线,a-zA-Z0-9W:a-zA-Z0-9以上的正则,如果要想驱动起来,则必须依靠Pattern 类和Matcher 类。Pattern 主要表示一个规则的意思,即:正则表达式的规则需要Pattern 类中使用。Matcher 类主要表示使用Pattern 指定好的验证规则。本类 中没有明确的构造
5、方法可以供用户使用,那么则肯定上类的构造方法被私有化了,则可以直接从Pattern 类中取得本类的实例。指定好操作的正则: public staticPatterncompile(Stringregex)可以为matcher 类实例化: publicMatchermatcher(CharSequenceinput)拆分: publicString split(CharSequenceinput)回顾:String 中也存在拆分操作。进行字符串的验证: public boolean matches()字符串替换: public String replaceAll(String replaceme
6、nt)与String 中相同。javaview plaincopy1. importjava.util.regex.Pattern;2. importjava.util.regex.Matcher;3. publicclassRegexDemo034. publicstaticvoidmain(Stringargs)5. Stringstr=1983-07-27;/指定好一个日期格式的字符串6. Stringpat=d4-d2-d2;/指定好正则表达式7. Patternp=Ppile(pat);/实例化Pattern类8. Matcherm=p.matcher(str);/实例化Matche
7、r类9. if(m.matches()/进行验证的匹配,使用正则10. System.out.println(日期格式合法!);11. else12. System.out.println(日期格式不合法!);13. 14. 15. ;读者可以自行使用以下的方式:不使用正则验证。在attern 类中也可以使用正则进行字符串的拆分功能。javaview plaincopy1. importjava.util.regex.Pattern;2. importjava.util.regex.Matcher;3. publicclassRegexDemo044. publicstaticvoidmain
8、(Stringargs)5. /要求将里面的字符取出,也就是说按照数字拆分6. Stringstr=A1B22C333D4444E55555F;/指定好一个字符串7. Stringpat=d+;/指定好正则表达式8. Patternp=Ppile(pat);/实例化Pattern类9. Strings=p.split(str);/执行拆分操作10. for(intx=0;xs.length;x+)11. System.out.print(sx+t);12. 13. 14. ;还可以使用Matcher 类中的字符串替换功能。范例:将字符串中的全部数字替换成 “_”javaview plainco
9、py1. importjava.util.regex.Pattern;2. importjava.util.regex.Matcher;3. publicclassRegexDemo054. publicstaticvoidmain(Stringargs)5. /要求将里面的字符取出,也就是说按照数字拆分6. Stringstr=A1B22C333D4444E55555F;/指定好一个字符串7. Stringpat=d+;/指定好正则表达式8. Patternp=Ppile(pat);/实例化Pattern类9. Matcherm=p.matcher(str);/实例化Matcher类的对象1
10、0. StringnewString=m.replaceAll(_);11. System.out.println(newString);12. 13. ;只要使用正则的验证的规则,那么就可以匹配各种复杂的字符串。4.String 类对正正则的支持从之前的操作中,可以发现,很多的代码除了要求的字符串不同,使用正则规则不同,基本就没什么特别的了。所以在JDK1.4之后,Java 对正则进行了一些扩充,在String 中开始直接支持正则的操作。javaview plaincopy1. importjava.util.regex.Pattern;2. importjava.util.regex.Ma
11、tcher;3. publicclassRegexDemo064. publicstaticvoidmain(Stringargs)5. Stringstr1=A1B22C333D4444E55555F.replaceAll(d+,_);6. booleantemp=1983-07-27.matches(d4-d2-d2);7. Strings=A1B22C333D4444E55555F.split(d+);8. System.out.println(字符串替换操作:+str1);9. System.out.println(字符串验证:+temp);10. System.out.print(字符串的拆分:);11. for(intx=0;xs.length;x+)12. System.out.print(sx+t);13. 14. 15. ;但是,在使用正则的进修有一点是需要特别注意的。现在, 假设有如下一个字符串的拆分程序:java