我的理解:正規表示式(regular expression)是用來做字串匹配的一種精簡表達方法。
一般形式:result = re.match(正規表示式, 匹配字串)
python中的正規表示式匹配規則:
從左到右匹配,一旦匹配成功立刻返回class型別(不再匹配後續字元),否則返回nonetype
表示字元
宣告:e.g. 『\d』 表示為數字,則相應大寫 『\d』 表示取反,即非數字。這裡不對其大寫做說明。符號
作用等價於
.
佔乙個字元的位置,可匹配除\n的任何字元/
[ 規則 ]匹配乙個滿足括號內規則的字元
/\d匹配乙個數字[1-9],[^\d]
\s匹配空格,如 \t, \n及空格等
[^\s]
\w匹配數字、字母、下劃線[1-9a-za-z_],[^\w]
注:[ ]間的規則與規則之間無需用空格隔開,如上面的\w的另一種表示。
[ ]內的^表示非 的意思,[^123]等價於[^1^2^3]
[1-9]:此字元為1到9間的數字
表示數量
符號作用
等價於*
符號前的字元可有可無
+符號前字元至少出現一次
?符號前字元只能出現0次或1次
指定符號前字元出現數量為m次/
指定符號前字元至少出現m次/
指定…區間為m次到n次/
注:1.解決re與python中轉義字元的衝突問題,e.g.
有字串為 string = 「\\nstring」(表轉義),如果做正規表示式匹配這個字串,需要這樣寫"\\\\nstring",為什麼是四個反斜槓呢?因為對比匹配字串來說,re的第乙個反斜槓用來作為\ 的匹配,第三個反斜槓則用來作為\n的匹配。
python中的原始(raw)字串很好的解決了這個問題,在re字串前加r例如string = r"\nstring"就直接表示了原始的字串(也就是雙引號內什麼樣,字串就是什麼樣)。
因此,在一般的re前最好加上r。
2.幾個幫助理解上述符號的例子:
result = re.match("\d+", 「abc」) ,result型別為none,因為在abc中數字一次都沒出現
result = re.match("\d?[a-z]", 「1234abc」),result型別為none,問號釋義為出現0次或1次,字串向右匹配,匹配到2前已經出現過一次數字,因此re會對 2 做[a-z]的匹配,而2型別不為字母,故為none。
result = re.match("\d?", 「1234abc」),result型別為class,當匹配到字元1為數字後,證明數字出現了一次,那麼直接返回class。
表示邊界
符號作用
^匹配字串開頭
$匹配字串結尾
\b匹配單詞邊界
\b匹配非單詞邊界
乙個例子,匹配手機號碼格式是否正確:
result = re.match(r"^1[35678]\d$", phone_number)
未完待續
Python學習 (九 正規表示式)
re模組使 python 語言擁有全部的正規表示式功能。re.match嘗試從字串的起始位置匹配乙個模式,如果不是起始位置匹配成功的話,就返回none,也含著true和false的判斷。re.match pattern,string,flags 0 有以下使用方式 test 使用者輸入的字串 if ...
python正則表達學習
python替換 主要是利用 python 的正則表達,python的正則表達功能比較強大。我就介紹下我經常用的幾個方法。可能說的詳細,如果要深入研究的話。還是 要去看下python的文件了.廢話不多說。馬上開始介紹 一般我會用re.compile來建立乙個正則物件。python 文件上介紹好象這個...
python學習 正規表示式總結
正規表示式是對 字串 操作的一種 邏輯公式 就是用事先定義好的一些特定字元 及這些特定字元的組合,組成乙個 規則字串 這個 規則字串 用來表達對字串的一種邏輯過濾 模糊匹配 import re 正規表示式模組 string jy2018 4 30jy re srt re.match jy strin...