1. 程式人生 > 實用技巧 >python 正則表示式用法

python 正則表示式用法

做資料清洗時,經常需要用到正則表示式替換等等

首先介紹一下元字元(匹配規則)

.                    匹配任意字元(不包括換行符)
^                    匹配開始位置,多行模式下匹配每一行的開始
$                    匹配結束位置,多行模式下匹配每一行的結束
*                    匹配前一個元字元0到多次
+                    匹配前一個元字元1到多次
?                    匹配前一個元字元0到1次
{m,n}                匹配前一個元字元m到n次
\\                   轉義字元,跟在其後的字元將失去作為特殊元字元的含義,例如\\.只能匹配.,不能再匹配任意字元
[]                   字符集,一個字元的集合,可匹配其中任意一個字元
| 邏輯表示式 或 ,比如 a|b 代表可匹配 a 或者 b (...) 分組,預設為捕獲,即被分組的內容可以被單獨取出,預設每個分組有個索引,從 1 開始,按照"("的順序決定索引值 (?iLmsux) 分組中可以設定模式,iLmsux之中的每個字元代表一個模式,用法參見 模式 I (?:...) 分組的不捕獲模式,計算索引時會跳過這個分組 (?P<name>...) 分組的命名模式,取此分組中的內容時可以使用索引也可以使用name (?P=name) 分組的引用模式,可在同一個正則表示式用引用前面命名過的正則 (?
#...) 註釋,不影響正則表示式其它部分,用法參見 模式 I (?=...) 順序肯定環視,表示所在位置右側能夠匹配括號內正則 (?!...) 順序否定環視,表示所在位置右側不能匹配括號內正則 (?<=...) 逆序肯定環視,表示所在位置左側能夠匹配括號內正則 (?<!...) 逆序否定環視,表示所在位置左側不能匹配括號內正則 (?(id/name)yes|no) 若前面指定id或name的分割槽匹配成功則執行yes處的正則,否則執行no處的正則 \number 匹配和前面索引為number的分組捕獲到的內容一樣的字串 \A 匹配字串開始位置,忽略多行模式 \Z 匹配字串結束位置,忽略多行模式 \b 匹配位於單詞開始或結束位置的空字串 \B 匹配不位於單詞開始或結束位置的空字串 \d 匹配一個數字, 相當於 [0
-9] \D 匹配非數字,相當於 [^0-9] \s 匹配任意空白字元, 相當於 [ \t\n\r\f\v] \S 匹配非空白字元,相當於 [^ \t\n\r\f\v] \w 匹配數字、字母、下劃線中任意一個字元, 相當於 [a-zA-Z0-9_] \W 匹配非數字、字母、下劃線中的任意字元,相當於 [^a-zA-Z0-9_]