正則學習備忘2—匹配乙個或者多個字元
在上面一節講到正則學習中講到的是關於當個字元的匹配,如果想匹配乙個很長的字串中的若干個或者很多個字元,如果都用上面的單個字元匹配模式那將需要書寫很長的正規表示式,列入在web的顏色判斷中就需要這麼寫#[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]。這明顯是違反dry原則。對於多個字元的匹配正則有提供其他的可以解決的辦法。
一.匹配乙個或者多個:在正則中,可以在單個字元比如"x",字元組"[a-d]",特定型別比如"\d",單個任意字元"."後面新增"+"來匹配乙個或者多個的字串,即至少由乙個字元組成的字串。
匹配0個1個或者多個:"*"
匹配0個或者1個:"?"
二.匹配固定數目的字元,正規表示式中,可以在 單個字元(比如「j」)、字元組(比如「[abcde]」)、特定字元型別(比如「\d」)、單個任意字元(即「.」) 後面加「」 ,來表示匹配零個或多個字元組成的字串。如a表示aaaaaa,注意這時表示a出現六次,而不是表示a後面再出現6個a。"\d"匹配000-999這1000個數。
三.匹配區間以內數目的字元,上面講到匹配固定數目的數,如果想匹配個數範圍在某個區間內,就可以使用"", "\d"匹配0-999這個範圍的數。這裡還需要注意兩個特列,"\d",就是起始範圍為0,結束為1時是相當於匹配0個或者1個"\d?"。如果是這樣"\d"就相當於匹配乙個或者多個"\d+".
在上面講的這兩點中可以得知"{}"也是屬於元字元,如果要將其作為特殊字元應該將其轉義"\"
正則2 匹配開頭結尾,分組轉義
匹配結尾開頭 簡單判斷email,轉義 分組import re defmain names age age loge age1 a age age 1 age a 123 for name in names ret re.match r a za z a za z0 9 name if ret pr...
正規表示式 2 匹配 切割 替換 獲取
目錄 1 匹配功能 2 切割功能 3 替換 4 獲取 需求 驗證手機號碼是否合法 其實用的就是string類中matches方法 演示匹配 匹配手機號是否正確 public static void functiondemo 1 校驗 其實使用的就是string類中的split方法。需求 切割名字輸出...
12 匹配一次或多次出現的字元
說明 有時,你需要匹配一行中一次或多次出現的字元 或一組字元 這意味著它至少出現了一次,並可能重複出現。你可以使用 字元來檢查是否是這種情況。需要記住,字元或模式必須連續出現。也就是說,字元必須有重複一遍。例如,a g將在 abc 中找到乙個匹配,並返回 a 因為有 它也會在 aabc 中找到乙個匹...