re正規表示式庫的簡介、入門、使用方法

ckxllf發表於2019-08-31

  re正規表示式庫的簡介

  正規表示式在很多語言裡都支援,python也不例外,re模組就是正規表示式的應用 正規表示式對字串的邏輯操作,主要是對字串的一種過濾,用“元字元” 與“普通字元”組成一個字串規則對已知的字串或文字過濾出自己想要的字串。

  1、正規表示式元字元

  \

  跳脫字元,將後邊緊跟著的字元變成特殊字元,或將後邊的特殊字元變成普通字元

  如:在正規表示式中,"\n"換行符,"\\"則代表一個普通字元"\"

  ^  匹配第一行行首,匹配多行需要傳參 flags=re.MULTILINE

  $  匹配最後一行行尾,匹配多行需要傳參 flags=re.MULTILINE

  .  除"\r""\n"外,匹配任意的單個字元,要使"."匹配換行符,flags=re.DOTALL

  |  或,如 "aaa|bbb|ccc",表示"aaa","bbb","ccc"三選一

  ?  匹配前邊的子表示式0次或1次,等價於{0,1}

  +  匹配前邊的子表示式1次或多次,等價於{1,}

  *  匹配前邊的子表示式0次或多次,,等價於{0,}

  {}  {n}匹配前邊的子表示式n次,{n,}匹配前邊的子表示式至少n次 即:>= n,{n,m}匹配前邊的子表示式n~m次,即:n<= 表示式 <=m

  ()  分組,從1開始,從左至右數"("為第幾組,下標0為全部分組

  []

  字符集匹配[]中的人一個字元,之匹配一次,如[abc]:表示"a","b","c"三選一。也可以給定範圍(必須是連續的才行),如[a-z]:表示a到z任意一個字元。

  還可以取反,如[^abc]:除"a","b","c"外的任意字元。注:[]中只有"^","-","\"三個特殊字元,其中"\"代表跳脫字元,其它的都代表原本普通的字元,如:[.]只是一個普通的點字元

  注:要使用元字元本身的普通字元,請使用跳脫字元轉義一下,如 :"\(" 在正規表示式中代表普通給"("字元,其它的雷同

  re正規表示式庫的入門

  1、re.match函式

  re.match 嘗試從字串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match()就返回none。

  語法:re.match(pattern, string, flags=0)

  引數說明:

  pattern 匹配的正規表示式

  string 要匹配的字串。

  flags 標誌位,用於控制正規表示式匹配的方式,如:是否區分大小寫,多行匹配等等。

  2、re.search方法

  re.search 掃描整個字串並返回第一個成功的匹配。

  語法:re.search(pattern, string, flags=0)

  引數說明:

  pattern 匹配的正規表示式

  string 要匹配的字串。

  flags 標誌位,用於控制正規表示式匹配的方式,如:是否區分大小寫,多行匹配等等。

  3、檢索和替換

  Python 的 re 模組提供了re.sub用於替換字串中的匹配項。

  語法:re.sub(pattern, repl, string, count=0, flags=0)

  引數: 無錫人流手術多少錢

  pattern : 正則中的模式字串。

  repl : 替換的字串,也可為一個函式。

  string : 要被查詢替換的原始字串。

  count : 模式匹配後替換的最大次數,預設 0 表示替換所有的匹配。

  4、re.compile 函式

  compile 函式用於編譯正規表示式,生成一個正規表示式( Pattern )物件,供 match() 和 search() 這兩個函式使用。

  語法:re.compile(pattern[, flags])

  引數:

  pattern : 一個字串形式的正規表示式

  flags : 可選,表示匹配模式,比如忽略大小寫,多行模式等,具體引數為:

  re.I 忽略大小寫

  re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依賴於當前環境

  re.M 多行模式

  re.S 即為 . 並且包括換行符在內的任意字元(. 不包括換行符)

  re.U 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依賴於 Unicode 字元屬性資料庫

  re.X 為了增加可讀性,忽略空格和 # 後面的註釋

  re正規表示式庫的使用方法

  1、去掉字串中的所有括號及括號內容

  #去掉字串中的所有括號及括號內容

  import re

  str="今天(1)天氣{1}非常好啊,[1]是的。"

  str_sub = re.sub(u"\\(.*?\\)|\\{.*?}|\\[.*?]", "", str)

  print(str_sub)

  '今天天氣非常好啊,是的。'


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2655636/,如需轉載,請註明出處,否則將追究法律責任。

相關文章