正規表示式

2021-10-12 16:21:01 字數 3039 閱讀 2281

1.1 普通字元

字母,數字,漢字,下劃線,以及沒有特殊定義的標點符號,都是普通字元,表示式中的普通字元,在匹配乙個字串的時候,匹配與之相同的乙個字元

1.2 簡單的轉義字元

表示式說明

\n換行符

\t製表符

\\代表\本身

^,\$,\.,\\(,\),\[,\],\?,\+,\*,\

2.1 標準字元集合

能夠與**『多種字元**』匹配的表示式:注意:區分大小寫,大寫是相反的意思

表示式說明

\d任意乙個數字,0-9中的任意乙個

\w任意乙個字母,數字,或下劃線,也就是0-9,a-z,a-z,_中的乙個

\s包括空格,製表符,換行符等空白字元的其中任意乙個

.小數點可以匹配任意乙個字元,如果要匹配包括「\n「在內的所有字元,一般使用[\s\s]

3.1 自定義集合

的匹配方式,能夠匹配方括號中的任意乙個字元

表示式說明

[abc@5]

匹配"a",「b」,「c」,"@"中的任意乙個

[^abc]

匹配除了a,b,c之外的任意乙個字元

[f-k]

匹配f-k之間的任意乙個字母

[^a-f0-3]

匹配a-f,0-3之外的任意乙個字元

**注意:**正規表示式的特殊符號,被包含到中括號中,則失去特殊意義,除了^,-之外

標準字元集合,除了小數點外,如果被包含於中括號中,那麼自定義字元集合將包含該標準字元集合

例如:[\d.\-+]:將匹配:數字,小數點,-,+

量詞修飾匹配次數的特殊符號

表示式說明

表示式重複n次

表示式至少重複m次,最多重複n次

表示式至少重複m次

?匹配0次或者1次,相當於

+表示式至少出現1次,相當於

*表示式不出現或者出現任意次,相當於

匹配次數中的貪婪模式(匹配的字元越多越好,預設)

匹配次數中的非貪婪模式(匹配字元越少越好,修飾匹配次數的特殊符號再加上"?"號)

字元邊界

本組標記匹配的不是字元,而是位置,符合某種條件的位置

表示式說明

^與字串開始的地方進行匹配

$與字串結束的地方進行匹配

\b匹配乙個單詞邊界

\b 匹配這樣乙個位置,前面的字元和後面的字元不全是\w,也就是說,左右兩邊的字元,至少有乙個不能被\w表示才可以

單詞邊界就是單詞和符號之間的邊界

這裡的單詞可以是中文字元,英文本元,數字;符號可以是中文符號,英文符號,空格,製表符,換行

選擇符和分組

表示式作用

| 分支結構

左右兩邊表示式是或的關係,匹配左邊或者右邊

()捕獲組

1.在被修飾匹配次數的時候,括號中的額表示式可以作為整體被修飾2.取匹配結果的時候,括號中的表示式匹配到的內容可以被單獨得到,3.每一對括號會分配乙個編號,使用()的捕獲根據左括號的順序從1開始自動編號,捕獲元素編號為0的第乙個捕獲是由整個正規表示式模式匹配的文字

(?:express)非捕獲組

一些表示式中,不得不使用(),但是又不需要儲存()中子表示式匹配的內容,這時可以使用非捕獲組來抵消使用()帶來的***

1        ((a)(b(c)))

2 (a)

3 (b(c))

4 (c)

反向引用(\n)

反向引用很方便,因為它允許我們重複模式而無需再次編寫

每一對()會分配乙個編號,使用()的捕獲根據左括號的順序從1開始自動編號

通過反向引用,可以對分組已捕獲的字串進行引用

1.只進行子表示式的匹配,匹配內容不計入最終的匹配結果,是零寬度的

2.這個位置應該符合某個條件,判斷當前位置的前後字元,是否符合指定的條件,但不匹配前後的字元,是對位置的匹配

3.正規表示式匹配過程中,如果子表示式匹配到的是字元內容,而非位置,並被儲存到最終的匹配結果中,那麼就認為這個子表示式是占有字元的,如果子表示式匹配的僅僅是位置,或者匹配的內容並不儲存到最終的匹配結果中,那麼就認為這個子表示式是零寬度的,占有字元還是零寬度,是針對匹配內容是否儲存到最終的匹配結果中而言的

表示式說明

(?=exp)

斷言自身出現的位置後面能匹配表示式exp eg:[a-z]+(?=ing)

(?!exp)

斷言此位置的後面不能匹配表示式exp

(?<=exp)

斷言自身出現的位置前面能匹配表示式exp

(?!斷言此位置的前面不能匹配表示式exp

eg:[a-z]+(?=ing)表示以ing結尾的符合[a-z]的字元

1. 忽略大小寫模式ignorecase

匹配時忽略大小寫,預設情況下 正則是區分大小寫的

2. 單行模式 singleline

整個文字看做是乙個字串,只有乙個開頭乙個結尾,使小數點「.」可以匹配包含換行符在內的任意字元

3.多行模式 multiline

每一行都是乙個字串,都有開頭和結尾

在指定了multiline之後,如果需要僅匹配字串開始和結束位置,可以使用\a和\z

public

class

demo01

// .pattern.matcher(string regex,charsequence input)是乙個靜態方法,

// 用於快速匹配字串,該方法適合用於只匹配一次,且匹配全部字串.

system.out.

println

(pattern.

matches

("\\w"

,"woshizhongguoren"))

;}}

public

class

demo02

}

public

class

demo03

}}

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...