1、 匹配所有的數字[0-9]
匹配所有的字母[a-z]
匹配所有的大寫字母 [a-z]
匹配所有數字字母 [0-9a-za-z]
2、元字元
\d 是匹配所有數字
\w 是配置所有的數字字母下劃線還有中文
\s 是匹配所有的空白符 製表符 換行符
\n 匹配回車
\t 匹配tab
\d 匹配所有非數字
\w 匹配 所有非數字字母 下劃線
\s 匹配所有非空白
. 匹配處了換行符之外的人任意乙個字元
^ 匹配乙個字串的開始
$ 匹配乙個字串的結束
[abc123] 匹配abc123 這幾個字元
[^abc123] 匹配除了abc123 的所有字元
[^ ] 匹配非空字元
| 或得關係 例如:alex|wusi
() 用來規範字元的範圍
注釋 :^alex|alexerer$ 這樣寫的話 alex1223445 也會匹配
^(alex|alexer)$ 這樣寫的話 alex122344 就不會在匹配了 只匹配alex
3、 量詞
匹配n 次
匹配至少n次
匹配n-m 次
? 0 或者1次
+ 1-無窮大
* 0-無窮大
4、 匹配手機號 1[2-9]\d
匹配任意正整數 [1-9]\d*\
匹配任意的小數 \d+\.\d+
匹配整數或者小數 \d+(\.\d+)?
5 、 re 正則
import re
ret= re.findall('\d','hello1234556') ######前面是規則後面是要匹配的字串
print(ret) ###返回結果['123456', '12334']
ret1 = re.search('\d','hello123,word456') ###### 只匹配從左到右第乙個 匹配項
print(ret1) #### 返回結果是 為乙個變數 需要用group獲取值
print(ret1.group()) #####返回結果是1
上述兩個的區別就是:
import re
phone_num = input("請輸入手機號:")
regex = r'^1[2-9]\d$'
ret = re.search(regex,phone_num)
ret1 = re.findall(regex,phone_num)
if ret :
print("合法手機號")
else:
print("不是合法的手機號")
#如果input 輸入的是 1372345345678 使用find_all 就會顯示 空列表
#如果上述方式 使用的是search 就會返回none
re.match(r『\d+』,r'84alex') #用match 的話 預設自帶^預設就是匹配以數字給開頭的,如果 匹配『alex84』 還匹配不到
find_all(正規表示式,帶匹配的字串 )
功能是:取所有
返回值:列表 所有匹配到的項都會返回到列表中
import re
phone_num = input("請輸入手機號:")
regex = r'^1[2-9]\d$'
ret1 = re.findall(regex,phone_num)
print(ret1)
search( 正規表示式,帶匹配的字串 )
功能是: 從頭開始往後找任何地方有符合條件的都返回乙個
返回值:re 自定義型別
import re
phone_num = input("請輸入手機號:")
regex = r'^1[2-9]\d$'
ret = re.search(regex,phone_num)
print(ret)
match(正則 表示式,帶匹配的字串) #####匹配使用者輸入的時候,都用是match
功能是: 從從頭開始匹配,如果開始 匹配到了 就是匹配成功了,如果開始部門沒有 匹配到,就 匹配失敗
返回值:re自定義型別
re.split(「正則」,帶匹配的字串)
ret = re.split(r'\d+',r'alexx875wusi')
print(ret)
返回為:['alexx', 'wusi'] 把數字給切出去了
替換方法:
re.sub( 正則 替換的後的字串,替換前的字串)
ret = re.sub(r'\d+','h',r'alex345wusi23')
print(ret)
返回結果為:alexhwusih
re.sub( 正則 替換的字串,替換前的字串)
ret = re.sub(r'\d+','h',r'alex345wusi23')
print(ret)
返回結果為:('alexhwusih', 2) ####替換後的結果和替換的次數
正規表示式分組命名(?p《組名》正規表示式) 給這個分組內的正規表示式起乙個名字
等後面匹配出完整結果之後通過.group('組名') 就可以獲得這個分組中匹配的內容
例如:
import re
ret = re.search('\d\d','alex3714')
print(ret.group())
輸出37
import re
ret = re.search('\d(?p\d)','alex3714')
print(ret.group('sedn'))
這樣相當於給7乙個sedn分組,這樣輸出就是7
python正規表示式元字元 正規表示式
字元 描述將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...
Python 正規表示式
1.在python中,所有和正規表示式相關的功能都包含在re模組中。2.字元 表示 字串的末尾 如 road 則表示 只有當 road 出現在乙個字串的尾部時才會匹配。3.字元 表示 字元中的開始 如 road 則表示 只有當 road 出現在乙個字串的頭部時才會匹配。4.利用re.sub函式對字串...
Python正規表示式
學習python自然而然就不得不面對正規表示式這個難題。當初在沒有學習python之前,自己也曾經嘗試著學習過正規表示式,但是那時候感覺很麻煩,很難懂,結果就是不了了之。但是現在學習python我用的書是 python基礎教程 第二版 這本書中對re模組的講解很簡單易懂,內容不多但起碼把人領進門了,...