python筆記--正則表達式(1)

第一個正則表達式:

  • 正則表達式是包含文本和特殊字符的字符串,該字符串描述一個可以識別各 種字符串的模式。

    • 上面第一個正則表達式模式是「foo」,該模式沒有使用任何特殊字符進行匹配其他字符,所以能夠匹配此模式的只有foo字符串,同理,Python和abc123一樣。

特殊符號與字符

  • 常見的正則表達式的特殊符號與字符:

  • 創建字符集:

    • 怎樣才能匹配句點(dot)或者句號(period)字符?
    • 要顯式匹配一個句點符號本身,必須使用反斜線轉義句點符號的功能,例如「.」。
    • 儘管句號可以匹配任意符號,但某些時候想要匹配特定的字符,於是可以使用方括號。

    • 關於[cr][23][dp][o2]這個正則表達式有一點需要說明:如果僅允許 「r2d2」或者「c3po」 作爲有效字符串,就需要更嚴格限定的正則表達式。因爲方括號僅僅表示邏輯或的功能, 所以使用方括號並不能實現這一限定要求。唯一的方案就是使用擇一匹配,例如, r2d2|c3p 。
  • 限定與否定:

    • 方括號中兩個符號中間用連接字符(-)連接,用於指定一個字符的範圍.
    • 如果脫字符(^)緊跟在左方括號後面,這個符號就表示不匹配給定字符集中的任何一個字符。

  • 使用閉包操作符實現存在性和頻數匹配
    • 星號或者星號操作符(*)將匹配其左邊的正則表達式出現零次或者多次的情況(在計算機編程語言和編譯原理中,該操作稱爲Kleene閉包)
    • 加號(+)操作符將匹配一次或者多次出現的正則表達式(也叫正閉包操作符)
    • 問號(?)操作符將匹配零次或者依次出現的正則表達式
    • 大括號({}),裏面或者是單個值,將最終精確地匹配前面的正則表達式 N 次(如果是{N})或者一定範圍的次數。,{M,N}將匹配 M~N 次出現。
    • 「儘可能少的次數」是什麼意思?當模式匹配使用分組操作符時,正則表達式引擎將試圖 「吸收」匹配該模式的儘可能多的字符。這通常被叫做貪婪匹配。

  • 使用圓括號指定分組 :
    • 目的:
      • 匹配模式的子字符串可以保存起來供後續使用。 這些子組能夠被同一次的匹配或者搜索重複調用,或者提取出來用於後續處理。
      • 對正則表達式進行分組;
      • 匹配子組。