<li id="oyjrt"><acronym id="oyjrt"></acronym></li>
  • <rp id="oyjrt"></rp>

    <em id="oyjrt"><acronym id="oyjrt"></acronym></em>

      葵花寶典教程,一個自學編程平臺

      葵花寶典教程,一個自學編程平臺

      Python - 正則表達式

      正則表達式是一個特殊的字符序列,它使用模式中的特殊語法幫助您匹配或查找其他字符串或字符串集。正則表達式在 UNIX 世界中被廣泛使用。


      Python 模塊re完全支持 Python 中的類 Perl 正則表達式。如果在編譯或使用正則表達式時發生錯誤,re 模塊會引發異常 re.error。


      我們將介紹兩個重要的函數,它們將用于處理正則表達式。但首先要說一件小事:有各種各樣的字符,當它們用于正則表達式時會有特殊的含義。為避免在處理正則表達式時出現任何混淆,我們將使用原始字符串作為r'expression'。


      匹配函數_

      此函數嘗試將 RE模式匹配到帶有可選標志的字符串。


      這是此函數的語法 -


      re.match(pattern, string, flags=0)

      這是參數的描述 -


      編號 參數及說明

      1

      圖案


      這是要匹配的正則表達式。


      2

      細繩


      這是字符串,它將被搜索以匹配字符串開頭的模式。


      3

      旗幟


      您可以使用按位或 (|) 指定不同的標志。這些是修飾符,在下表中列出。


      re.match函數在成功時返回匹配對象,在失敗時返回None。我們使用match對象的group(num)或groups()函數來獲取匹配的表達式。


      編號 匹配對象方法和描述

      1

      組(數量=0)


      此方法返回整個匹配(或特定子組 num)


      2

      組()


      此方法返回元組中的所有匹配子組(如果沒有則為空)


      例子

      現場演示

      #!/usr/bin/python

      import re


      line = "Cats are smarter than dogs"


      matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)


      if matchObj:

         print "matchObj.group() : ", matchObj.group()

         print "matchObj.group(1) : ", matchObj.group(1)

         print "matchObj.group(2) : ", matchObj.group(2)

      else:

         print "No match!!"

      執行上述代碼時,會產生以下結果 -


      matchObj.group() :  Cats are smarter than dogs

      matchObj.group(1) :  Cats

      matchObj.group(2) :  smarter

      搜索功能_

      此函數使用可選標志搜索字符串中第一次出現的 RE模式。


      這是此函數的語法 -


      re.search(pattern, string, flags=0)

      這是參數的描述 -


      編號 參數及說明

      1

      圖案


      這是要匹配的正則表達式。


      2

      細繩


      這是字符串,它將被搜索以匹配字符串中任何位置的模式。


      3

      旗幟


      您可以使用按位或 (|) 指定不同的標志。這些是修飾符,在下表中列出。


      re.search函數在成功時返回匹配對象,在失敗時返回無。我們使用match對象的group(num)或groups()函數來獲取匹配的表達式。


      編號 匹配對象方法和描述

      1

      組(數量=0)


      此方法返回整個匹配(或特定子組 num)


      2

      組()


      此方法返回元組中的所有匹配子組(如果沒有則為空)


      例子

      現場演示

      #!/usr/bin/python

      import re


      line = "Cats are smarter than dogs";


      searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I)


      if searchObj:

         print "searchObj.group() : ", searchObj.group()

         print "searchObj.group(1) : ", searchObj.group(1)

         print "searchObj.group(2) : ", searchObj.group(2)

      else:

         print "Nothing found!!"

      執行上述代碼時,會產生以下結果 -


      searchObj.group() :  Cats are smarter than dogs

      searchObj.group(1) :  Cats

      searchObj.group(2) :  smarter

      匹配與搜索

      Python 提供了兩種不同的基于正則表達式的原始操作:match僅在字符串的開頭檢查匹配,而search在字符串中的任何位置檢查匹配(這是 Perl 默認所做的)。


      例子

      現場演示

      #!/usr/bin/python

      import re


      line = "Cats are smarter than dogs";


      matchObj = re.match( r'dogs', line, re.M|re.I)

      if matchObj:

         print "match --> matchObj.group() : ", matchObj.group()

      else:

         print "No match!!"


      searchObj = re.search( r'dogs', line, re.M|re.I)

      if searchObj:

         print "search --> searchObj.group() : ", searchObj.group()

      else:

         print "Nothing found!!"

      執行上述代碼時,會產生以下結果 -


      No match!!

      search --> searchObj.group() :  dogs

      搜索和替換

      使用正則表達式的最重要的re方法之一是sub。


      句法

      re.sub(pattern, repl, string, max=0)

      此方法用repl替換字符串中所有出現的 RE模式,除非提供了max ,否則替換所有出現。此方法返回修改后的字符串。


      例子

      現場演示

      #!/usr/bin/python

      import re


      phone = "2004-959-559 # This is Phone Number"


      # Delete Python-style comments

      num = re.sub(r'#.*$', "", phone)

      print "Phone Num : ", num


      # Remove anything other than digits

      num = re.sub(r'\D', "", phone)    

      print "Phone Num : ", num

      執行上述代碼時,會產生以下結果 -


      Phone Num :  2004-959-559

      Phone Num :  2004959559

      正則表達式修飾符:選項標志

      正則表達式文字可能包括一個可選的修飾符來控制匹配的各個方面。修飾符被指定為可選標志。您可以使用異或 (|) 提供多個修飾符,如前所示,并且可以由以下之一表示 -


      編號 修飾符和說明

      1

      re.I


      執行不區分大小寫的匹配。


      2

      重L


      根據當前語言環境解釋單詞。這種解釋會影響字母組(\w 和 \W),以及單詞邊界行為(\b 和 \B)。


      3

      再M


      使 $ 匹配一行的結尾(不僅僅是字符串的結尾)并使 ^ 匹配任何行的開頭(不僅僅是字符串的開頭)。


      4

      回復


      使句點(點)匹配任何字符,包括換行符。


      5

      回復


      根據 Unicode 字符集解釋字母。此標志影響 \w、\W、\b、\B 的行為。


      6

      re.X


      允許“更可愛”的正則表達式語法。它忽略空格(除了在集合 [] 內或被反斜杠轉義時)并將未轉義的 # 視為注釋標記。


      正則表達式模式

      除了控制字符(+ ? . * ^ $ ( ) [ ] { } | \),所有字符都匹配自己。您可以通過在控制字符前面加上反斜杠來轉義它。


      下表列出了 Python 中可用的正則表達式語法 -


      編號 圖案和描述

      1

      ^


      匹配行首。


      2

      $


      匹配行尾。


      3

      .


      匹配除換行符以外的任何單個字符。使用 m 選項也可以匹配換行符。


      4

      [...]


      匹配括號中的任何單個字符。


      5

      [^...]


      匹配任何不在括號中的單個字符


      6

      回覆*


      匹配 0 次或多次出現的前面表達式。


      7

      重新+


      匹配 1 次或多次出現的前面表達式。


      8

      回覆?


      匹配 0 或 1 次出現的前面表達式。


      9

      重新{ n}


      精確匹配前面表達式的 n 次出現。


      10

      再{n,}


      匹配 n 次或多次出現的前面表達式。


      11

      重新{ n,米}


      匹配至少 n 次和最多 m 次出現的前面表達式。


      12

      一個| b


      匹配 a 或 b。


      13

      (回覆)


      對正則表達式進行分組并記住匹配的文本。


      14

      (?imx)


      臨時切換正則表達式中的 i、m 或 x 選項。如果在括號中,則只有該區域受到影響。


      15

      (?-imx)


      暫時關閉正則表達式中的 i、m 或 x 選項。如果在括號中,則只有該區域受到影響。


      16

      (?: 回覆)


      分組正則表達式而不記住匹配的文本。


      17

      (?imx:重新)


      臨時切換括號內的 i、m 或 x 選項。


      18

      (?-imx:重新)


      暫時關閉括號內的 i、m 或 x 選項。


      19

      (?#...)


      評論。


      20

      (?= 重新)


      使用模式指定位置。沒有范圍。


      21

      (?! 回覆)


      使用模式否定指定位置。沒有范圍。


      22

      (?>重新)


      匹配獨立模式而不回溯。


      23

      \w


      匹配單詞字符。


      24

      \W


      匹配非單詞字符。


      25

      \s


      匹配空格。等價于 [\t\n\r\f]。


      26

      \S


      匹配非空白。


      27

      \d


      匹配數字。相當于 [0-9]。


      28

      \D


      匹配非數字。


      29

      \一種


      匹配字符串的開頭。


      30

      \Z


      匹配字符串的結尾。如果存在換行符,它將在換行符之前匹配。


      31

      \z


      匹配字符串的結尾。


      32

      \G


      匹配上一場比賽結束的地點。


      33

      \b


      在括號外匹配單詞邊界。在括號內時匹配退格 (0x08)。


      34

      \B


      匹配非單詞邊界。


      35

      \n、\t 等


      匹配換行符、回車符、制表符等。


      36

      \1...\9


      匹配第 n 個分組的子表達式。


      37

      \10


      如果已經匹配,則匹配第 n 個分組子表達式。否則指字符代碼的八進制表示。


      正則表達式示例

      文字字符

      編號 示例和說明

      1

      Python


      匹配“蟒蛇”。


      字符類

      編號 示例和說明

      1

      [Pp]ython


      匹配“Python”或“python”


      2

      擦[耶]


      匹配“ruby”或“ruby”


      3

      [愛歐]


      匹配任意一個小寫元音


      4

      [0-9]


      匹配任何數字;與 [0123456789] 相同


      5

      [阿茲]


      匹配任何小寫 ASCII 字母


      6

      [AZ]


      匹配任何大寫 ASCII 字母


      7

      [a-zA-Z0-9]


      匹配以上任何一項


      8

      [^aeiou]


      匹配除小寫元音以外的任何內容


      9

      [^0-9]


      匹配除數字以外的任何內容


      特殊字符類

      編號 示例和說明

      1

      .


      匹配除換行符以外的任何字符


      2

      \d


      匹配一個數字:[0-9]


      3

      \D


      匹配非數字:[^0-9]


      4

      \s


      匹配一個空白字符:[ \t\r\n\f]


      5

      \S


      匹配非空白:[^ \t\r\n\f]


      6

      \w


      匹配單個單詞字符:[A-Za-z0-9_]


      7

      \W


      匹配一個非單詞字符:[^A-Za-z0-9_]


      重復案例

      編號 示例和說明

      1

      紅寶石?


      匹配“rub”或“ruby”:y 是可選的


      2

      紅寶石*


      匹配 "rub" 加上 0 個或多個 ys


      3

      紅寶石+


      匹配 "rub" 加上 1 個或多個 ys


      4

      \d{3}


      精確匹配 3 位數字


      5

      \d{3,}


      匹配 3 個或更多數字


      6

      \d{3,5}


      匹配 3、4 或 5 位數字


      非貪婪重復

      這匹配最少的重復次數 -


      編號 示例和說明

      1

      <.*>


      貪婪重復:匹配“<python>perl>”


      2

      <.*?>


      Nongreedy:匹配“<python>perl>”中的“<python>”


      用括號分組

      編號 示例和說明

      1

      \D\d+


      無組:+ 重復 \d


      2

      (\D\d)+


      分組:+ 重復 \D\d 對


      3

      ([Pp]ython(, )?)+


      匹配“Python”、“Python、python、python”等。


      反向引用

      這再次匹配先前匹配的組 -


      編號 示例和說明

      1

      ([Pp])ython&\1ails


      匹配 python&pails 或 Python&Pails


      2

      (['"])[^\1]*\1


      單引號或雙引號字符串。\1 匹配第一組匹配的任何內容。\2 匹配第二組匹配的任何內容,等等。


      備擇方案

      編號 示例和說明

      1

      蟒蛇|perl


      匹配“python”或“perl”


      2

      擦(y|le))


      匹配“紅寶石”或“盧布”


      3

      Python(!+|\?)


      “Python”后跟一個或多個!還是一個?


      錨點

      這需要指定匹配位置。


      編號 示例和說明

      1

      ^蟒蛇


      在字符串或內部行的開頭匹配“Python”


      2

      蟒蛇$


      在字符串或行的末尾匹配“Python”


      3

      \APython


      匹配字符串開頭的“Python”


      4

      蟒蛇\Z


      匹配字符串末尾的“Python”


      5

      \bPython\b


      在單詞邊界匹配“Python”


      6

      \刷\ B


      \B 是非單詞邊界:匹配“rube”和“ruby”中的“rub”,但不是單獨匹配


      7

      蟒蛇(?=?。?/p>


      如果后跟感嘆號,則匹配“Python”。


      8

      Python(??。。?/p>


      如果后面沒有感嘆號,則匹配“Python”。


      帶括號的特殊語法

      編號 示例和說明

      1

      R(?#comment)


      匹配“R”。其余的都是評論


      2

      R(?i)uby


      匹配“uby”時不區分大小寫


      3

      R(?i:uby)


      和上面一樣


      4

      擦(?:y|le))


      僅分組而不創建 \1 反向引用


      第1條葵花寶典
      == ==

      Copyright www.texaschild-custody.com Rights Reserved葵花寶典教程.鄂icp2022001145號-1

      分享:

      支付寶

      微信

      亚洲日韩一级无码A片
      <li id="oyjrt"><acronym id="oyjrt"></acronym></li>
    1. <rp id="oyjrt"></rp>

      <em id="oyjrt"><acronym id="oyjrt"></acronym></em>