正則表達式
- Regular Rxpression, 又稱規則表達式
- 正則表達式 就是事先定義好的一些特定字符(組合),組成一個”規則字符串”,這個”規則字符串”用來描述了一種字符串的匹配模式
- 作用:可以檢查一個串是否含有某種數據、將匹配的數據替換或者取出(1.判斷數據是否符合要求,2.提取你想要的數據)
- 特點: 功能強大,使用靈活
re模塊操作
#re模塊使用過程
#導入re模塊
import re
# 使用match方法進行匹配操作
result = re.match(正則表達式, 要匹配的字符串)
# 如果上一步匹配到數據的話,可以使用group方法來提取數據
result.group()
#如果沒有匹配 則result是None
resilt = re.search(正則表達式, 要匹配的字符串)
# 如果上一步匹配到數據的話,可以使用group方法來提取數據
result.group()
匹配單個字符
字符 |
功能 |
. |
匹配任意一個字符(除了\n) |
[] |
匹配[ ]中列舉的字符 |
\d |
匹配數字,即0-9 |
\D |
匹配非數字,即不是數字 |
\s |
匹配空白,即空格,tab鍵 |
\S |
匹配非空白 |
\w |
匹配單詞字符,即a-z、A-Z、0-9、_、中文 |
\W |
匹配非單詞字符 |
匹配多個字符
字符 |
功能 |
* |
匹配前一個字符出現0次或者無限次,即可有可無\d*等價於\d{0, } |
+ |
匹配前一個字符出現1次或者無限次,即至少有1次\d+等價於\d{1, } |
? |
匹配前一個字符出現1次或者0次,即要麼有1次,要麼沒有\d?等價於\d{0,1} |
{m} |
匹配前一個字符出現m次 |
{m,n} |
匹配前一個字符出現從m到n次 |
匹配開頭結尾
字符 |
功能 |
^ |
匹配字符串開頭 |
$ |
匹配字符串結尾 |
匹配分組
字符 |
功能 |
\ |
匹配左右任意一個表達式 |
(ab) |
將括號中字符串作爲一個分組 |
\num |
引用分組num匹配到字符串 |
(?p\) |
分組起別名 |
(?P=name) |
引用別名爲name分組匹配到字符串 |
re模塊的高級用法
- search 掃描整個字符串並返回第一個成功的匹配
- findall 類似search,返回列表
- sub 將匹配到的數據進行替換
- split 根據匹配進行切割字符串,並返回一個列表
python貪婪和非貪婪
- 貪婪:Python裏數量默認是貪婪的(在少數語言裏也可能是默認貪婪),總是嘗試匹配儘可能多的字符
- 非貪婪:總是嘗試匹配儘可能少的字符
- 在”*”,”?”,”+”,”{m,n}”等量詞後面加上?,使貪婪變成非貪婪
- 注意事項:貪婪儘可能多,非貪婪儘可能少;貪婪和非貪婪必須有一個前提就是滿足整體匹配結果
r的作用
- python中字符串前面加上 r 表示原生字符串 ,結論就是寫正則表達式的時候加上 r 字符,沒毛病!!!
PEGEXP
- PEGEXP在列值內進行匹配,如果被匹配的文本在列值中出現,PEGEXP將會找到它,相應的行將被返回