Java 正則表達式

正則表達式

一般的正則表達式具備:驗證, 查找, 替換的功能;正則表達式

  • 若是一個字符串做爲正則表達式,只能匹配它自己windows

    // ^ 以什麼開頭
      // $ 以什麼結尾
      //[123]  []是一個字符,1或者2或者3
      //[0123456789]  等價  [0-9]
      //[a-z]  等價  [abc...xyz]
      //[A-Z]  等價  [ABC...XYZ]
    
      //[^012]  不包含0或1或2或之外的全部字符
      //[^ ]  不包含
    
      //{9}  一共有9位   例如:[a-z]{9} 含9位小寫字母
      //{1,4}  1位到4位  例如[a-z]{1,4}  1位或者2位或者3位或者4位的小寫字母
      //{9,}  最少9位
      //+     {1,}   最少一位
      //?     {0,1}  0位或者1位
      //*     {0,}   最少0位
    
      // . 通配全部
    
      // \d  [0-9]中的任意一個數   (若是是大寫的D,則取反)
      // \w  [0-9a-zA-Z_]  0-9或a-z或A-Z或_中的任意一個
      // \b  匹配單詞邊界
    
      //  (a|b|c)  [a-c]
      //  (http|https)   http[s]{0,1}
    
      //匹配手機號  :   ^1[357948]\d{9}$     (\d和[0-9]是等價的)
      //匹配小數 12.2  :  [12]{2}\.2{1}   原本.能夠匹配全部,可是用轉義字符以後,只能匹配.
      //匹配任意小數     :   (^[1-9]\d*|^0{1})\.\d*
    
      //   (^[1-9]\d*|^0{1})\.\d*
    
      //匹配用戶名  6-20位,包含數字,字母,_,首字母必須是字母
      //  ^[a-zA-Z]\w{5,19}
      //判斷是否匹配
      boolean istag = "1asdfasdf123123123".matches("^[a-zA-Z]\\w{5,19}");
      System.out.println(istag);
    
      String han = "1996年,在大連獲文化部舉辦的韓紅寫真韓紅寫真(10張) " +
              "中國歌手出國前選拔賽金獎,同年在文化部等舉辦的歌唱\"孔繁森\"聲樂做品賽獲創做金獎、演唱金獎。" +
                      "從1996年開始爲其它歌手擔任詞曲創做及製做工做," +
                      "主要做品《晚安個人愛》,《中華民族》,《擁你一塊兒飛》等," +
                      "並前後爲《隋唐演義》、《片兒警》、《野火春風斗古城》等電視劇演唱主題曲。";
      //搜索
      Pattern p = Pattern.compile("《.{2,5}》");
      Matcher m = p.matcher(han);
      while (m.find()) {      //若是能夠獲取一個值
          String str = m.group();     //記錄獲取的值
    
          System.out.println(str.substring(1,str.length() - 1));
      }
    
      //windows98  windows2000   windows2007
      //(?<=windows)(\d{2}|\d{4})
    
      Pattern p1 = Pattern.compile("(?<=windows)(\\d{4}|\\d{2})");
      Matcher m1 = p1.matcher("windows2000");
      while (m1.find()) {         //若是能夠獲取一個值
          String str = m1.group();     //記錄獲取的值
    
          System.out.println(str);
      }
    
      //替換
      String des = "個人電話13512311313 你的電話17023452345";
      String newdes = des.replaceAll("^1[357948]\\d{9}$", "110");
      System.out.println(newdes);
    
      //分割
      String[] des1 = des.split("^1[357948]\\d{9}$");
      System.out.println(Arrays.toString(des1));
相關文章
相關標籤/搜索