正規表示式

2021-09-24 20:37:04 字數 3174 閱讀 4841

正規表示式: 用來描述符合某種模式(具有某種特徵)的一類字串的表示式.

正規表示式的組成

元字元主要有以下幾類

1.特殊字元(不顯示的字元)

元字元含義

\a警報

\b退格, 單詞邊界

\eesc字元

\f進紙符

\n換行符

\r回車符

\t水平製表符

\v垂直製表符

2.不確定範圍的字元組

所謂字元組,就是包含一組特定字元,但只從中選乙個.

我的理解是: 在中指定乙個範圍, 從中任意匹配乙個

字元

含義[abc]

匹配乙個a,b ,c中的任意乙個字元

[a-z]

匹配乙個從a到z中的任意乙個字元

[^abc]

匹配乙個非a,b,c中的任意乙個字元

[^a-z]

匹配乙個不在a到z之中的字元

[[a-z]-[abc]]

字元組減法

[[a-z] && [ ^abc]]

字元組集合運算

注意,

普通字元組內其他部分元字元 不起作用,如[.]並不會匹配任意乙個字元,而是匹配符號.

普通字元組內的\d,\w還是可以使用的

普通字元組內要匹配-,必須寫在最前面,如[-abc]

3.確定範圍字元組
範圍明確,不需要你指定的字元組, 返回乙個滿足條件的字元

符號含義.

匹配任意字元

\d匹配乙個數字

\d匹配乙個非數字

\w匹配乙個單詞字元, 即乙個數字或字母

\w匹配乙個非單詞字元

\s匹配乙個空白字元

\s匹配乙個非空白字元

4.限定(數量)字元

不匹配任意乙個字元,放在匹配表示式後面,用來描述前面表示式的數量

字元

含義舉例

例子解釋

*匹配前面的子表示式零次或多次,即

a*a出現0次或多次

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

a+a至少出現一次

?匹配前面的子表示式零次或一次

a?a出現一次或者不出現

匹配確定的 n 次

aa必須出現5次

至少匹配 n 次

aa至少出現99次

最少匹配 n 次且最多匹配 m 次

aa出現5到10次

5.位置元字元

字元含義

^匹配 行/字串 開始的位置

\a匹配文字起始位置,即第一行開頭

$匹配 行/字串 的結尾

\z匹配文字結束位置

\b單詞邊界

\b非單詞邊界

\g上一次匹配結束的位置

(?=指定內容)

肯定順序環視,匹配指定內容前面的位置

(?!指定內容)

否定順序環視, 匹配非指定內容前面的位置

(?<=指定內容)

肯定逆序環視, 匹配指定內容後面的位置

(?否定逆序環視,匹配非指定內容後面的位置

(?<=指定內容1)(?=指定內容2)

匹配指定內容1之後,指定內容2之前的位置

把 1234567變成"1,234,567",可以用"(?<=\d)(?=(\d\d\d)+(?!\d)) "來尋找,的位置.

符號

含義(指定內容)

捕獲括號,指定內容匹配成功後,內容被括號捕獲,可以引用

\1,\2, …,\n

引用, 指定捕獲的組號來引用內容, 組號從1開始

(?:指定內容)

非捕獲括號, 即使指定內容**獲, 內容也不參與捕獲

(?p<指定名字>指定內容)

給分組命名,引用時用()

(?>指定內容)

固化分組, 簡單來講一直匹配直到不符合條件,且不歸還內容

(指定內容1指定內容2

對於捕獲和引用, 如在串"12345678900"中,

搜尋: (\d)(\d) 替換為: 111\2 ,其中\2為組號 ,結果為"1112345678900"

貪婪模式和非貪婪模式

貪婪模式,就是在整個表示式匹配成功的前提下,盡可能多的匹配

非貪婪模式,就是在整個表示式匹配成功的前提下,盡可能少的匹配.

如在』『bbb>』'中匹配"<\w*>"

貪婪匹配得到: 『『bbb>』』; 非貪婪匹配得到: 『』"

預設匹配為貪婪匹配, 直接使用*,+等符號

非貪婪匹配加"?": 如+?,*?

在"abbb"中匹配"ab+", 為貪婪匹配, 得"abbb".

在"abbb"中匹配"ab+?", 為非貪婪匹配, 得"ab".

注釋和模式修飾詞

表示含義

(?i:指定內容)

匹配指定內容,不區分大小寫

(?x:指定內容)

寬鬆排列和注釋模式

(?s:指定內容)

點號通配模式

(?m:指定內容)

增強的行錨點模式

(?#指定內容)

注釋↩︎

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

非負整數 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正規表示式 編寫正規表示式

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