zoukankan      html  css  js  c++  java
  • 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方法(用法与上面差不多)

  • 相关阅读:
    DNA 序列翻译
    python3 练习题100例 (二十九)猴子吃桃问题
    python3 练习题100例 (二十八)打印一定范围内的素数
    python3 练习题100例 (二十七)列表元素改写
    python3 练习题100例 (二十六)回文数判断
    python3 练习题100例 (二十五)打印一个n层金字塔
    python3 练习题100例 (二十四)打印完数
    python3 练习题100例 (二十三)与7相关的数
    python3 练习题100例 (二十二)输入两个字符串,输出两个字符串集合的并集
    python3 练习题100例 (二十一)打印一定范围内的水仙花数
  • 原文地址:https://www.cnblogs.com/fjsnail/p/3475130.html
Copyright © 2011-2022 走看看