正規表示式

2021-10-25 01:18:22 字數 1004 閱讀 8671

1.基礎

匹配前乙個字元m次

[abc] a或b或c

* 匹配前乙個字元0到無限次

+ 匹配前乙個字元1到無限次

? 匹配前乙個字元0到1次

{a,b}匹配前乙個字元或子表示式至少m次至多n次

匹配前乙個字元或者子表示式至少n次

. 代表任意乙個字元,包括它本身

^ 表示取反

多加個?號,會把模式為惰性匹配

簡單來說,就是你要匹配的字元是xx,但必須滿足形式是axxb這樣的字串,那麼你就可以這樣寫正規表示式

p = r"(?<=a)xx(?=b)"

2.回溯引用

不同於前面的向前向後查詢,這一條有時候你未必繞的過去。在有些情況下,你還必須得用到回溯引用,所以你如果想擁有在實際應用中使用正規表示式,回溯引用是你應該了解和掌握的。

我們還是從最開始的例子來說。

你原本要匹配之間的內容,

現在你知道html有多級標題,你想把每一級的標題內容都提取出來。你也許會這樣寫:

p = r".*?"

這樣一來,你就可以將html頁面內所有的標題內容全部匹配出來。即到的內容都可以被提取出來。

但是我們之前說過,寫正規表示式困難的不是匹配到想要的內容,而是盡可能的不匹配到不想要的內容。在這個例子中,很有可能你就會被下面這樣的用例玩壞。

比方說結尾就能看出效果

看到\1了嗎?原本那個位置應該是[1-6],但是我們寫的是\1,

我們之前說過,轉義符\幹的活就是把特殊的字元轉成一般的字元,把一般的字元轉成特殊字元。

普普通通的數字1被轉移成什麼了呢?在這裡1表示第乙個子表示式,也就是說,它是動態的,是隨著前面第乙個子表示式的匹配到的東西而變化的。比方說前面的子表示式內是[1-6],在實際字串中找到了1,那麼後面的\1就是1,如果前面的子表示式在實際字串中找到了2,那麼後面的\1就是2。

類似的,\2,\3,…就代表第二個第三個子表示式。

所以回溯引用是正規表示式內的乙個「動態」的正規表示式,讓你根據實際的情況變化進行匹配。

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

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

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