java 正则表达式

 

1.java中正则表达式的使用方法和C#中有点不一样,他分为两个类:Pattern和Mather,前者用来编译正则表达式,

Pattern对象是正则编译后再内存中存放的表示形式,再用Pattern对象生成对应的模式匹配器,将所有的结果都存放在模式匹配器中,通过模式匹配器提供的方法如:

matches,find进行自己需要的操作

例子:

public static void main(String[] args) {
   // TODO Auto-generated method stub
    Pattern p=Pattern.compile("ab");   //正则表达式先编译成对应的Pattern模式
    Matcher m=p.matcher("ab");        //用模式生成模式匹配器,在m中存放的是所有的匹配信息
    boolean b=m.matches();
    System.out.println(b);
	}

 上面的例子也可通过:  boolean b2=Pattern.matches("ab", "abc");一步搞定,但是考虑到有的匹配模式可能需要重复使用,所以在单一使用的情况下,可以直接采用Parttern.matches(parttern,char sequence)这种模式

2.Matcher的简单使用:m.find(),m.end,m.start,m.group

 

public static void main(String[] args) {
	// TODO Auto-generated method stub
        Pattern p=Pattern.compile("\\w+");  //模式
        Matcher m=p.matcher("java is very easy");  //模式匹配器
        while(m.find())  //找到匹配字符串
       {
        System.out.println(m.start()+"--"+m.end()+":"+m.group());//输出位置和内容
       } 
      int i=0;
      while(m.find(i))   //从第i开始查找
      {
    	  System.out.println(m.group());
    	  i++;
      }
         
}

 

 3.聚焦m.reset(char sequence) 方法:重置模式匹配器重的待字符串

 

public static void main(String[] args) {
		// TODO Auto-generated method stub
        String [] emailArray={"fangjian@qq.com","fjsnail@sina.com","jackvin@mail.com","www.baidu.com"};
        
        Pattern p=Pattern.compile("^\\w+@(qq|sina|mail).com$");
        Matcher m=null;
	        for(String str:emailArray)
	        {
	           m=p.matcher(str);
	           System.out.println(str+"---"+(m.matches()?"is a email":"is not a email"));
	        }
	        
	        System.out.println("-------m.reset  test-------------");
	        for(String str:emailArray)
	    	{
	    		if(m==null)
	    			 m=p.matcher(str);     //模式不变,判断模式匹配器是否为空,空就说明还没有放字符串进去
	    		else 
	    			m.reset(str);          //模式匹配器非空,说明这次上次比较的模式匹配器,需要换字符串,生成新的模式匹配器
	    		   System.out.println(str+"---"+(m.matches()?"is a email":"is not a email"));
	    		
	    	}
        }

 4.m.find()和m.lookat()比较

  String charsquence="www.baidu.com.cn";
  Pattern p2=Pattern.compile("^\\w.");
  Matcher m=p2.matcher(charsquence);
  System.out.println(m.lookingAt());  //true  只要在字符中有一个匹配就算成功
 System.out.println(m.find());      //flase 字符必须完全匹配

 5.在matcher中还提供了replaseAll,replaceFirst,split方法(用法与上面差不多)

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2013-12-15 11:58  Jackvin  阅读(361)  评论(0编辑  收藏  举报