正規表示式

2022-08-26 11:36:15 字數 1573 閱讀 5389

正規表示式:

官方定義: 正規表示式是對字串操作的一種邏輯公式, 就是事先定義好的一些有特定字元, 以及這些特定字元的組合, 組成乙個規則字串,次字串用來對字串進行過濾.

正規表示式只能和字串相關.

字元組:  [ 字元組 ]

在同乙個位置上可能出現的各種字元組成乙個字元組,用 [ ] 表示, 字元可以有很多種 : 數字, 字母, 標點符號等

元字元匹配內容

.  匹配除換行符以外的其他任意字元

\w匹配數字字母下劃線

\s匹配任意空白符

\d匹配數字

\n匹配換行符

\t匹配製表符

\b匹配乙個單詞的結尾

^匹配字串的開始

$匹配字串的結束

\w匹配非數字字母下劃線

\s匹配非空白符

\d匹配非數字

a|b匹配a或匹配b

()匹配括號內的表示式,表示乙個組

[ ]匹配字元組內的字元

[^ ]

匹配除了字元組內的所有字元

量詞 :

量詞用法說明

*至少重複0次或者重複n次

+至少重複1次或者重複n次

?重複0次或者1次

重複n次

重複n次或者更多次

重複n到m次

貪婪匹配 : 

在滿足匹配時,匹配盡可能長的字串,預設情況下,採用貪婪匹配

正則帶匹配字元

匹配結果

說明<.*>

....

....

預設為貪婪匹配,

會匹配符合匹配規則中最長的字串

<.*?>

....

表示式後加上?意思

將貪婪匹配轉換為非貪婪匹配,

會在符合匹配規則的情況下

盡量匹配最短的字串

非貪婪匹配 :

*?重複任意次,但會盡可能的少重複

+?重複一次或者更多次,但會盡可能的少重複

??重複0次或者1次,但會盡可能的少重複

?重複n到m次,但會盡可能的少重複

?重負n次後者更多次,但會盡可能的少重複

.*?的用法 :

. 是去任意字元

* 是取0到無窮

? 表示非貪婪模式

大多情況用在 : .*?x  #意思就是去前面任意的任意字元,直到乙個x出現.

轉義符 \

正規表示式中,有很多有特殊意義的元字元,比如 : \d , \s等, 如果要在正則中匹配正常的 ' \d '而不是數字,就需要對 ' \ ' 進行轉義,變成 ' \\ '.

正則待匹配結果

匹配結果

說明\d

\dfalse

因為在正規表示式中 ' \ '是具有特殊意義的字元,要匹配 ' \d '本身,表示式 \d 無效

\\d\d

true

轉移 \ 後變成 \\ ,可以匹配

\\\\d

\\dtrue

python中,字串中的 \ 也需要轉義

r'\\d'

r'\d'

true

在字串前加 r, 讓整個字串不轉義

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

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

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