正規表示式

2021-10-02 18:55:43 字數 1512 閱讀 5356

. 可以匹配所有字元,包括換行符

^代表整個字串的開頭,$代表整個字串的結尾

.可以匹配換行符之外的字元

^代表行首即整個字串的開始,$代表行尾即整個字串的結尾,開始指的是\n後緊接著的字元,結束指的是\n前的字元(此處需注意windows下換行符為\r\n,因此匹配結果時候需要加上\r,比如匹配以e結尾的行為:"e\r$")

例如字串:

"""aaa

bbb單行模式"^b.*" 匹配失敗,而多行模式"^b.*"可以匹配到第二行資料,由此可見,單行模式是將整個字串看成一行。

說明:a. 使用小括號制定乙個子表示式,也叫分組,捕獲後會自動分組號從1開始;b. 可以改變優先順序,分組號為0的表示匹配的整個字串而不是括號中的內容

說明:匹配對應的分組

舉例:"(very) \1" 匹配"very very",但捕獲的組group是very

說明:如果僅僅為了改變優先順序,就不需要捕獲分組

舉例:(?:w|f)ood  等價於"wood|food"

說明:分組捕獲,但是可以通過name訪問分組,python語法必須是(?pexp)

說明:零寬度正**先行斷言,斷言exp一定在匹配的右邊出現,也就是說斷言後面一定跟乙個exp

舉例:f(?=oo) f後面一定有oo出現

說明:零寬度正回顧後發斷言,斷言exp一定出現在匹配的左邊,也就是說前面一定有個exp

舉例:(?<=f)ood、(?<=t)ook 分別匹配ood、ook、ook之前一定有t出現

說明:零寬度負**先行斷言,斷言exp一定不會再匹配的右邊出現,也就是說斷言後面一定不是exp

舉例:f(?!oo) f後面一定不會有oo出現

說明:零寬度負回顧後發斷言,斷言exp一定不會出現在匹配的左邊,也就是說前面一定不會有個exp

說明:注釋

貪婪:預設是貪婪模式,盡量多匹配更長的字串

例1: "f.*t"  匹配字串"feed foot abbd get"  會匹配到"foot abbd get"   ---貪婪

"f.*?t" 匹配字串"feed foot abbd get"  會匹配到"foot"   ---非貪婪

匹配時忽略大小寫,python中為re.i、re.ignorecase

單行模式:可以匹配所有字元,包括'\n',python中為:re.s,re.dotail

多行模式:^行首,$行尾,python中為:re.m,re.multiline

忽略表示式中的空白字元,如果要使用空白字元用轉義,#可以用來做注釋,python為:re.x,re.verbose

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

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

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