新的起点 新的开始

快乐生活 !

深入浅出Java正则表达(1)

    正则表达式作为Perl最出众的卖点,已经在Linux平台上广泛的应用,比如命令grep sed等。JDK1.4 在NIO中重要提供了正则表达式引擎的实现。本系列将通过解决问题的方式来深入学习Java正则表达式。
最终我们目标是如何通过正则表达式获取Java代码中方法的个数与属性的个数(当然通过反射是小Case)
(1)如何统计一行中重复单词
 如果没有正则表达式,我们只能解析逐个判断了。正则呢?
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;

/**
 *
 * 
@author vma
 
*/
public class MatchDuplicateWords {
 
public static void main(String args[]){
      hasDuplicate(
"Faster pussycat  haha haha  dd dd haha haha zz zz");
   }

   
public static boolean hasDuplicate(String phrase){
      
boolean retval=false;

      String duplicatePattern 
="\\b(\\w+) \\1\\b";
      Pattern p 
= null;
      
try{
        p 
= Pattern.compile(duplicatePattern);
      }
      
catch (PatternSyntaxException pex){
         pex.printStackTrace();
         System.exit(
0);
      }
      
//count the number of matches.
      int matches = 0;
      
//get the matcher
      Matcher m = p.matcher(phrase);
      String val
=null;

      
//find all matching Strings
      while (m.find()){
         retval 
= true;
        val 
= ":" + m.group() +":";
        System.out.println(val);
        matches
++;
      }

      
//prepare a message indicating success or failure
      String msg = "   NO MATCH: pattern:" + phrase
             
+ "\r\n             regex: "
             
+ duplicatePattern;

      
if (retval){
      msg 
= " MATCH     : pattern:" + phrase
          
+ "\r\n         regex: "
          
+ duplicatePattern;
      }

      System.out.println(msg 
+"\r\n");
      
return retval;
   }
}


posted on 2008-08-24 00:13 advincenting 阅读(470) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

公告

Locations of visitors to this page

导航

<2008年8月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

常用链接

留言簿(13)

随笔分类(71)

随笔档案(179)

文章档案(13)

新闻分类

IT人的英语学习网站

JAVA站点

优秀个人博客链接

官网学习站点

生活工作站点

最新随笔

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜