现在的位置: 首页 > 综合 > 正文

23—java正则表达式01(简介)

2013年10月16日 ⁄ 综合 ⁄ 共 3171字 ⁄ 字号 评论关闭

 匹配汉字:

public class Demo{
 public static void main(String args[]) throws Exception{ 
 
  String str="中国人";
  if(str.matches("[\\u3E00-\\u9FA5]{3}")){
   System.out.println("符合");
   }
  else{
   System.out.println("不符合");
   }
  }
 }
 

 

正则表达式就是处理字符串的利器:
 字符串匹配(字符匹配)
 字符串查找
 字符串替换

 注意:\在正则表达式中很特别,所以又\出现的地方我们用\\表示;

pattern---被匹配的模式;
 import java.util.regex.Pattern; 
 import java.util.regex.Matcher;
 public class Demo{
  public static void main(String args[]){ 
   p("abc".matches("..."));
   p("a9982a".replaceAll("
\\d","-"));
   Pattern p=Pattern.compile("[a-z]{3}");//创建匹配模板
   Matcher m=p.matcher("fgh");//创建对应字符创的匹配器
   //m.matches()进行匹配
   p(m.matches());
   }
  public static void p(Object o){
   System.out.println(o);
   }
  }
 
1、MetaCharacters:
 初步认识认识一下:点(.)星(*)加(+)问号(?):
  .:表示一个字符;
  X*:X,表示零个或多个字符;
  X+:X,表示一个或多个;
  X?:X,一个或者零个;
  X{n}:X,恰好出现n此;
  X{n,}:X,至少出现n次;
  X{n,m}:X,至少出现n此但是不能超过m此
 预定义字符类:----中括号只匹配一个字符;
  \d 数字:[0-9]
  \D 非数字: [^0-9]
  \s 空白字符:[ \t\n\x0B\f\r]
  \S 非空白字符:[^\s]
  \w 单词字符:[a-zA-Z_0-9]
  \W 非单词字符:[^\w]

   import java.util.regex.Pattern; 
   import java.util.regex.Matcher;
   public class Demo{
    public static void main(String args[]){ 
      p("a".matches("."));//.表示一个字符
      p("aa".matches("aa"));
      p("aaaa".matches("a*"));//表示a出现零到多次
      p("aaaa".matches("a+"));//表示a出现一到多次
      p("".matches("a*"));
      p("aaaa".matches("a?"));//表示a出现零到一次
      p("".matches("a?"));
      p("a".matches("a?"));
      p("122334444555".matches("
\\d{3,100}"));//表示数字3到100个
      p("192.168.1.0".matches("
\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"));
      p("192".matches("[0-2][0-9][0-9]"));//表示每个数字的范围
      
     }
    public static void p(Object o){
      System.out.println(o);
     }
    }

 范围:
  import java.util.regex.Pattern; 
  import java.util.regex.Matcher;
  public class Demo{
   public static void main(String args[]){ 
     p("a".matches("[abc]"));//表示abc中的一个字符
     p("a".matches("[^abc]"));//表示不是abc中的任意一个字符
     p("A".matches("[a-zA-Z]"));//表示a到z或者A到Z之间的字符
     p("A".matches("[a-z]|[A-Z]"));//表示a到z或者A到Z之间的字符
     p("A".matches("[a-z[A-Z]]"));//表示a到z或者A到Z之间的字符
     p("R".matches("[A-Z&&[RFG]]"));//表示A到Z之间并且是RFG中的一个字符   
    }
   public static void p(Object o){
     System.out.println(o);
    }
   }

 认识 \s \w \d \:
  import java.util.regex.Pattern; 
  import java.util.regex.Matcher;
  public class Demo{
   public static void main(String args[]){ 
     p(" \n\r\t".matches("
\\s{4}"));
     p(" ".matches("
\\s"));
     p("a_8".matches("
\\w{3}"));
     p("abc444*&%".matches("[a-z]{1,3}\\d+[*&%$]+"));
     //java中一个反斜杠表示转义字符,而在正则表达式中反斜杠有特殊意义,所以得用四个
     p("
\\".matches("\\\\"));
       
    }
   public static void p(Object o){
     System.out.println(o);
    }
   }
 
 边界:
  ^:在中括号里面表示取反,不在中括号里面表示行的开头;
  $:表示行的结尾;
  \b 单词边界
  \B 非单词边界
  \A 输入的开头
  \G 上一个匹配的结尾
  \Z 输入的结尾,仅用于最后的结束符(如果有的话)
  \z 输入的结尾

  import java.util.regex.Pattern; 
  import java.util.regex.Matcher;
  public class Demo{
   public static void main(String args[]){ 
     p("hello sir".matches("^h.*"));//表示行已h开头后面是一个或多个字符
     p("hello sir".matches(".*ir&"));//表示以ir结尾,前面有一个或多个字符
     //表示已h开头后面跟一到三个a到z的字符,后面是o,在后面是单词边界,在后面是一到多个字符
     p("hello sir".matches("^h[a-z]{1,3}o\\b.*"));
     p("hellosir".matches("^h[a-z]{1,3}o\\b.*"));
      
    }
   public static void p(Object o){
     System.out.println(o);
    }
   }
 注意Matcher类中的reset()、find()、start()、end()方法;
 
 
    
 
 

抱歉!评论已关闭.