亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

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

系統 3350 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條評論
主站蜘蛛池模板: 成人午夜啪啪免费网站 | 欧美性色xo在线 | 91成人精品视频 | 91探花国产综合在线精品 | 日韩一区二区免费视频 | 在线不卡视频 | 日本乱中文字幕系列在线观看 | 亚洲精品国产suv一区88 | 国产伦精品一区三区视频 | 亚洲国产精品一区二区首页 | 四虎影业 | 久久网免费视频 | 国产一区二区三区久久精品 | 日韩1| 中文字幕日本一区波多野不卡 | 99热在线观看免费 | 日本一级毛片视频网站 | 天堂一区二区三区在线观看 | 日韩精品大片 | 成人a毛片视频免费看 | 日本精品一区二区三区在线 | 依人九九 | 亚洲 自拍 另类 制服在线 | 日韩一级精品视频在线观看 | 99精品大学生啪啪自拍 | 久久亚洲精品人成综合网 | 精品日韩在线观看 | 韩国三日本三级中文字幕 | 日b黄色| 一区国严二区亚洲三区 | 成人区精品一区二区毛片不卡 | 2020国产免费久久精品99 | 国产成人精品日本亚洲语音1 | 亚洲一区免费看 | 亚洲一区在线视频 | 日本欧洲亚洲一区在线观看 | 亚洲在线一区 | 伊人精品国产 | 欧美一级看片a免费观看 | 欧美日韩国产亚洲一区二区 | 兽皇在线观看 |