欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

java常用類庫-正則表達式【1】

系統 3402 0

正則表達式

1、 正則表達式可以方便的對數據進行匹配,可以執行更加復雜的字符串驗證、拆分、替換功能等。

Eg :現在判斷一個字符串是不是由數字組成?

A :不使用正則表達式

    public class RegexDemo01 {

	/**
	 * @param args
	 */

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str = "1234567890";//此字符串由數字組成
		boolean flag = true;//定義標志變量
		//不使用正則的基本思路是:將字符串轉換為字符數組,之后再依次進行判斷
		char[] c = str.toCharArray();//將字符串轉換為字符數組
		for(int i=0;i<c.length;i++){
			if(c[i]<'0' || c[i]>'9'){ //如果滿足條件,說明不是由數字組成
				flag = false;
				break;
			}
		}
		if(flag){
			System.out.println("yes!由數字組成");
		}else{
			System.out.println("不是由數字組成!");
		}
		
	}

}

  


運行結果截圖:

java常用類庫-正則表達式【1】

問題:基本思路是將字符串拆分為字符數字之后,一個個進行驗證,如果遇到更加復雜的情況呢?

B 使用正則表達式

    import java.util.regex.Pattern;


public class RegexDemo02 {

	/**
	 * @param args
	 */

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str = "1234567890";
		if(Pattern.compile("[0-9]+").matcher(str).matches()){ //使用正則表達式
			System.out.println("是由數字組成!");
		}else{
			System.out.println("不是由數字組成!");
		}
	}

}

  


運行結果截圖:

java常用類庫-正則表達式【1】

2、 正則: Pattern 類、 Matcher

正則的兩個核心操作類:

    
      
        
          A
        
          public final class 
          
            Matcher
          
          extends 
          
            
              Object
            
          
           implements 
          
            
              MatchResult
            
          
        
      
    
  
    
      
      
    
  
    
      
        B: public final class 
        
          Pattern
        
         extends 
      
      
        
          Object
        
      
      
         implements 
      
      
        
          Serializable
        
      
    
  
    
      
      
    
  

3、正則表達式的編譯表示形式

指定為字符串的正則表達式必須首先被編譯為此類的實例。然后,可將得到的模式用于創建 Matcher 對象,依照正則表達式,該對象可以與任意 字符序列 匹配。執行匹配所涉及的所有狀態都駐留在匹配器中,所以多個匹配器可以共享同一模式。

因此,典型的調用順序是

Pattern p = Pattern. compile ("a*b");

Matcher m = p. matcher ("aaaaab");

boolean b = m. matches ();

在僅使用一次正則表達式時,可以方便地通過此類定義 matches 方法。此方法編譯表達式并在單個調用中將輸入序列與其匹配。語句

boolean b = Pattern.matches("a*b", "aaaaab");

等效于上面的三個語句,盡管對于重復的匹配而言它效率不高,因為它不允許重用已編譯的模式。

此類的實例是不可變的,可供多個并發線程安全使用。 Matcher 類的實例用于此目的則不安全。

    
    
  

1、 常用的正則規則:

構造

匹配

字符

x

字符 x

\\

反斜線字符

\0 n

帶有八進制值 0 的字符 n (0<= n <=7)

\0 nn

帶有八進制值 0 的字符 nn (0<= n <=7)

\0 mnn

帶有八進制值 0 的字符 mnn (0<= m <=3、0<= n <=7)

\x hh

帶有十六進制值0x 的字符 hh

\u hhhh

帶有十六進制值0x 的字符 hhhh

\t

制表符 ('\u0009')

\n

新行(換行)符 ('\u000A')

\r

回車符 ('\u000D')

\f

換頁符 ('\u000C')

\a

報警 (bell) 符 ('\u0007')

\e

轉義符 ('\u001B')

\c x

對應于 x 的控制符

字符類

[abc]

a、b 或 c(簡單類)

[^abc]

任何字符,除了 a、b 或 c(否定)

[a-zA-Z]

a 到 z 或 A 到 Z,兩頭的字母包括在內(范圍)

[a-d[m-p]]

a 到 d 或 m 到 p:[a-dm-p](并集)

[a-z&&[def]]

d、e 或 f(交集)

[a-z&&[^bc]]

a 到 z,除了 b 和 c:[ad-z](減去)

[a-z&&[^m-p]]

a 到 z,而非 m 到 p:[a-lq-z](減去)

預定義字符類

.

任何字符(與 行結束符 可能匹配也可能不匹配)

\d

數字:[0-9]

\D

非數字: [^0-9]

\s

空白字符:[ \t\n\x0B\f\r]

\S

非空白字符:[^\s]

\w

單詞字符:[a-zA-Z_0-9]

\W

非單詞字符:[^\w]

POSIX 字符類(僅 US-ASCII)

\p{Lower}

小寫字母字符:[a-z]

\p{Upper}

大寫字母字符:[A-Z]

\p{ASCII}

所有 ASCII:[\x00-\x7F]

\p{Alpha}

字母字符:[\p{Lower}\p{Upper}]

\p{Digit}

十進制數字:[0-9]

\p{Alnum}

字母數字字符:[\p{Alpha}\p{Digit}]

\p{Punct}

標點符號:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

\p{Graph}

可見字符:[\p{Alnum}\p{Punct}]

\p{Print}

可打印字符:[\p{Graph}\x20]

\p{Blank}

空格或制表符:[ \t]

\p{Cntrl}

控制字符:[\x00-\x1F\x7F]

\p{XDigit}

十六進制數字:[0-9a-fA-F]

\p{Space}

空白字符:[ \t\n\x0B\f\r]

java.lang.Character 類(簡單的 java 字符類型

\p{javaLowerCase}

等效于 java.lang.Character.isLowerCase()

\p{javaUpperCase}

等效于 java.lang.Character.isUpperCase()

\p{javaWhitespace}

等效于 java.lang.Character.isWhitespace()

\p{javaMirrored}

等效于 java.lang.Character.isMirrored()

Unicode 塊和類別的類

\p{InGreek}

Greek塊(簡單 )中的字符

\p{Lu}

大寫字母(簡單 類別

\p{Sc}

貨幣符號

\P{InGreek}

所有字符,Greek 塊中的除外(否定)

[\p{L}&&[^\p{Lu}]]

所有字母,大寫字母除外(減去)

邊界匹配器

^

行的開頭

$

行的結尾

\b

單詞邊界

\B

非單詞邊界

\A

輸入的開頭

\G

上一個匹配的結尾

\Z

輸入的結尾,僅用于最后的 結束符 (如果有的話)

\z

輸入的結尾

Greedy 數量詞

X ?

X ,一次或一次也沒有

X *

X ,零次或多次

X +

X ,一次或多次

X { n }

X ,恰好 n

X { n ,}

X ,至少 n

X { n , m }

X ,至少 n 次,但是不超過 m

Reluctant 數量詞

X ??

X ,一次或一次也沒有

X *?

X ,零次或多次

X +?

X ,一次或多次

X { n }?

X ,恰好 n

X { n ,}?

X ,至少 n

X { n , m }?

X ,至少 n 次,但是不超過 m

Possessive 數量詞

X ?+

X ,一次或一次也沒有

X *+

X ,零次或多次

X ++

X ,一次或多次

X { n }+

X ,恰好 n

X { n ,}+

X ,至少 n

X { n , m }+

X ,至少 n 次,但是不超過 m

Logical 運算符

XY

X 后跟 Y

X | Y

X Y

( X )

X,作為 捕獲組

Back 引用

\ n

任何匹配的 n th 捕獲組

引用

\

Nothing,但是引用以下字符

\Q

Nothing,但是引用所有字符,直到 \E

\E

Nothing,但是結束從 \Q 開始的引用

特殊構造(非捕獲)

(?: X )

X ,作為非捕獲組

(?idmsux-idmsux)

Nothing,但是將匹配標志 i d m s u x on - off

(?idmsux-idmsux: X )

X ,作為帶有給定標志 i d m s u x on - off的 非捕獲組

(?= X )

X ,通過零寬度的正 lookahead

(?! X )

X ,通過零寬度的負 lookahead

(?<= X )

X ,通過零寬度的正 lookbehind

(?<! X )

X ,通過零寬度的負 lookbehind

(?> X )

X ,作為獨立的非捕獲組

4、字符類

字符類可以出現在其他字符類中,并且可以包含并集運算符(隱式)和交集運算符 (&&)。并集運算符表示至少包含其某個操作數類中所有字符的類。交集運算符表示包含同時位于其兩個操作數類中所有字符的類。

字符類運算符的優先級如下所示,按從最高到最低的順序排列:

1

字面值轉義

\x

2

分組

[...]

3

范圍

a-z

4

并集

[a-e][i-u]

5

交集

[a-z&&[aeiou]]

java常用類庫-正則表達式【1】


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美精品一区二区蜜臀亚洲 | 日韩精品中文字幕久久 | 天堂色综合| 国产精品免费一区 | 第一次破處在线国语视频播放 | 国产毛片视频 | 国产精品久久久久久久午夜 | 色综色天天综合网 | 亚洲欧美精品综合中文字幕 | 99久久久无码国产精品 | 99久久国产综合精品网成人影院 | 一级特黄aa大片欧美 | 欧美搞b | 电影通午夜 | 久久久综合网 | 偷拍—91porny九色 | 亚洲欧洲一区二区 | 羞羞av在线 | 波多野结衣家教老师 | 欧美日韩一区二区不卡 | 天天干天天色 | 日韩欧美中文字幕在线播放 | 一区二区三区无码高清视频 | 国产精品国产a级 | 色秀视频在线观看全部 | 亚洲欧美小视频 | 国产亚洲精品久久无码小说 | 久久久久琪琪免费影院 | 91色欧美| 日本精品欧洲www | 波多野结衣办公室33分jian情 | 久久夜色精品 | 羞羞视频免费网站在线看 | 成人在线小视频 | 超碰97在线人人 | 久久午夜电影网 | 激情视频自拍 | 中文字幕在线一区二区三区 | 亚洲欧洲一区二区三区 | 久久伦理中文字幕 | 久久亚洲精品玖玖玖玖 |