JAVA使用正则表达式

原文来自~~http://blog.csdn.net/laizhenhai88/article/details/7293418

主要是搞清楚matches()/lookingAt ()/find()这三个方法的区别,以及会使用replaceAll() replaceFirst() appendReplacement()  appendTail() ,请看代码

  1. package test; 
  2.  
  3. import java.util.regex.Matcher; 
  4. import java.util.regex.Pattern; 
  5.  
  6. public class RegTest { 
  7.     public static void main(String[] args) 
  8.     { 
  9.         Pattern reg = Pattern.compile("(20\\d{2})-([01]\\d)-([0-3]\\d)"); 
  10.         Matcher matcher = null
  11.         System.out.println(reg.pattern()); 
  12.         matcher = reg.matcher("2012-02-25"); 
  13.          
  14.         //matches()方法尝试对整个目标字符展开匹配检测,是只有整个目标字符串完全匹配时才返回真值 
  15.         if (matcher.matches()) 
  16.         { 
  17.             System.out.println("time:"+matcher.group(0)); 
  18.             System.out.println("year:"+matcher.group(1)); 
  19.             System.out.println("year:"+matcher.group(2)); 
  20.             System.out.println("year:"+matcher.group(3)); 
  21.         } 
  22.          
  23.         Pattern reg2 = Pattern.compile("\\d*"); 
  24.         System.out.println(reg2.pattern()); 
  25.         matcher = reg2.matcher("2012abcd"); 
  26.          
  27.         //lookingAt()方法将检测目标字符串是否以匹配的子串起始 
  28.         if (matcher.lookingAt()) 
  29.         { 
  30.             System.out.println("num:"+matcher.group()); 
  31.         } 
  32.          
  33.         Pattern reg3 = Pattern.compile("\\d+"); 
  34.         System.out.println(reg3.pattern()); 
  35.         matcher = reg3.matcher("asf2012abcd2011jdf2010jk"); 
  36.          
  37.         //find()方法尝试在目标字符串里查找下一个匹配子串 
  38.         while(matcher.find()) 
  39.         { 
  40.             System.out.println("matcherStr:"+matcher.group()); 
  41.         } 
  42.          
  43.         //appendReplacement() 将当前匹配子串替换为指定字符串,并且将替换后的子串以及其之前到上次匹配子串之后的字符串段添加到一个StringBuffer对象里 
  44.         Pattern reg4 = Pattern.compile("(hello|goodbye)"); 
  45.         matcher = reg4.matcher("sayhelloandsaygoodbyeandsayhelloandsaysomething"); 
  46.         StringBuffer sb = new StringBuffer(); 
  47.          
  48.         while (matcher.find()){ 
  49.             System.out.println("matcherStr:"+matcher.group()); 
  50.             matcher.appendReplacement(sb, "IT"); 
  51.             System.out.println("sb:"+sb); 
  52.         } 
  53.         //appendTail() 方法则将最后一次匹配工作后剩余的字符串添加到一个StringBuffer对象里 
  54.         //可以在一次或多次调用 appendReplacement 方法后调用它来复制剩余的输入序列 
  55.         matcher.appendTail(sb); 
  56.         System.out.println("sb:"+sb); 
  57.     } 


输出结果如下:

  1. (20\d{2})-([01]\d)-([0-3]\d) 
  2. time:2012-02-25 
  3. year:2012 
  4. year:02 
  5. year:25 
  6. \d* 
  7. num:2012 
  8. \d+ 
  9. matcherStr:2012 
  10. matcherStr:2011 
  11. matcherStr:2010 
  12. matcherStr:hello 
  13. sb:sayIT 
  14. matcherStr:goodbye 
  15. sb:sayITandsayIT 
  16. matcherStr:hello 
  17. sb:sayITandsayITandsayIT 
  18. sb:sayITandsayITandsayITandsaysomething 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值