JavaSE筆記之《正規表示式》

2021-07-03 14:55:30 字數 3982 閱讀 2520

①正規表示式的語法:

下表顯示了正規表示式的語法:

表 1.1 正規表示式語法

元字元說明.

匹配任何單個字元。例如正規表示式「

b.g」能匹配如下字串:「

big」、「

bug」、「

b g」,但是不匹配「

buug」。$

匹配行結束符。例如正規表示式「

ejb$

」能夠匹配字串「

i like ejb

」的末尾,但是不能匹配字串「

j2ee without ejbs

!」。^

匹配一行的開始。例如正規表示式「

^spring

」能夠匹配字串「

spring is a j2ee framework

」的開始,但是不能匹配「

i use spring in my project」。*

匹配0至多個在它之前的字元。例如正規表示式「

zo*」能匹配「z

」以及「zoo

」;正規表示式「

.*」意味著能夠匹配任意字串。

/轉義符,用來將元字元當作普通的字元來進行匹配。例如正規表示式

/$被用來匹配美元符號,而不是行尾;正規表示式

/.用來匹配點字元,而不是任何字元的萬用字元。

匹配括號中的任何乙個字元。例如正規表示式「

b[aui]g

」匹配bug

、big

和bug

,但是不匹配

beg。可以在括號中使用連字元「

-」來指定字元的區間來簡化表示,例如正規表示式

[0-9]

可以匹配任何數字字元,這樣正規表示式「

ac」就可以匹配「

a0c」、「

a1c」、「

a2c」等字串;還可以制定多個區間,例如「

[a-za-z]

」可以匹配任何大小寫字母。還有乙個相配合使用的元字元「

^」,用在這裡並不像前邊的那個「

^」一樣表示匹配行開始,而是表示「排除

」,要想匹配除了指定區間之外的字元,就可以在左邊的括號和第乙個字元之間使用

^字元,例如「

[^163a-z]

」將能偶匹配除了1、

6、3和所有大寫字母之外的任何字元。

( )將

() 之間括起來的表示式定義為「組

」(group)

,並且將匹配這個表示式的字元儲存到乙個臨時區域

,這個元字元在字串提取的時候非常有用。

|將兩個匹配條件進行邏輯「或

」運算。

'z|food' 

能匹配"z" 

或"food"

。'(z|f)ood' 

則匹配"zood" 

或"food"。+

匹配前面的子表示式一次或多次。

例如正規表示式

9+匹配9、

99、999等。

?匹配前面的子表示式零次或一次。例如,

"do(es)?" 

可以匹配

"do" 

或"does" 

中的"do" 

。此元字元還有另外乙個用途,就是表示非貪婪模式匹配,後邊將有介紹

匹配確定的

n 次。例如,「e」

不能匹配「

bed」中的「

d」,但是能匹配「

seed

」中的兩個「e」。

至少匹配

n次。例如,「

e」不能匹配「

bed」中的「

e」,但能匹配

「seeeeeeeed

」中的所有「e」。

最少匹配

n次且最多匹配

m次。「

e」將匹配「

seeeeeeeed

」中的前三個「e」。

字元類[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]

邊界匹配器

^行的開頭

$行的結尾(注意是行的結尾,不是字串的結尾,匹配某乙個字元為結尾的只要把該字元放在正規表示式最末尾就好了)

\b單詞邊界

\b非單詞邊界

\a輸入的開頭

\g上乙個匹配的結尾

\z輸入的結尾,僅用於最後的結束符(如果有的話)

\z輸入的結尾

捕獲組可以通過從左到右計算其開括號來編號。例如,在表示式 ((a)(b(c))) 中,存在四個組。使用\n   其中n=0,1,2,3可以獲得當前規則的第n個組 $n可以獲得前乙個規則的第n個組

str.replaceall("(.)\\1+", "$1");

(.)表示組1 然後\1表示和組1一樣的資料    $1使得組1向後引用,也等於(.)表示的一樣的資料。該行**用於刪除重複字元。

pattern標記

canon_eq

case_insensitive(啟用不區分大小寫的匹配) ☆☆

comments(模式中允許空白和注釋)  ☆

dotall

literal

multiline(啟用多行模式,此時^、$匹配的是一行的行首和行尾,而不是輸入序列的行首行尾)    ☆☆

unicode_case

unix_lines

②正規表示式的使用(匹配、切割split、替換replace)☆☆☆

string str = "123344"; //要匹配的字串

1.把正規表示式封裝成物件

string reg = "//d+"; //正規表示式

pattern pattern = pattern.compile(reg); //把正規表示式封裝成物件

2.建立匹配器,與要匹配的字串相關聯。

通過呼叫模式的matcher方法從模式建立匹配器。建立匹配器後,可以使用它執行三種不同的匹配操作:

每個方法都返回乙個表示成功或失敗的布林值。通過查詢匹配器的狀態可以獲取關於成功匹配的更多資訊。 

matcher matcher = pattern.matcher(str);

Javase 正規表示式

1.正規表示式 1.定義 字串格式匹配的一種表示式,表示式中有很多萬用字元 2.作用 1.格式驗證 郵箱,郵編,身份證等 2.字串查詢 3.字串替換 2.正規表示式的常用萬用字元 1.x 以 開頭 2.x 以 結尾 3.x 任意乙個字元 4.任意乙個字元 5.x 0 多次 6.x 1 多次 7.x?...

JAVASE 正規表示式 反射技術

一 正規表示式 正規表示式是專門作用於字串的乙個正確的規則的表示式,其出現是為了簡化對字串相關操作的 書寫,都是由一些符號組成的表示式。正規表示式對字串的常見功能操作 1.匹配 使用string類中的matches方法,結果是boolean 2.切割 使用string類中的split方法,結果str...

正規表示式 正規表示式函式 筆記

筆記直接使用pycharm製作,需要原始檔請私聊。正規表示式函式 1.match 2.search 3.全域性匹配函式 全域性匹配 re.compile 正規表示式 findall 資料 import re string poythonydasadcasa pat2 p.y 懶惰模式執行 較精準 r...