python中使用正規表示式的步驟:
1.匯入re模組:import re
2.初始化乙個regex物件:re.compile()
3.剛剛建立的regex物件呼叫search方法進行匹配,返回要給march物件
4.剛剛的march物件呼叫group方法,展示匹配到的字串
下面例子的知識點:
對正規表示式分組用:(),正則裡的分組計數從1開始,不是從0,切記~~
group(數字):去對應的分組的值
groups():返回所有分組的元組形式
\d表示乙個數字
執行結果:
035補充知識點:\w表示乙個單詞,\s表示乙個空格4111234
035-411-1234
('035', '411', '1234')
regex_obj = re.compile(r'(\d\w\d)-(\d\d\d)-(\d\d\d\d)')執行結果:result = match_obj.group(1)
print(result)
regex_obj = re.compile(r'(\d\w\d)-(\d\d\d)-(\d\d\d\d)')
result = match_obj.group(1)
print(result)
regex_obj = re.compile(r'(\d\s\d)-(\d\d\d)-(\d\d\d\d)')
result = match_obj.group(1)
print(result)
0a5| 或:0哈50 5
regex_obj = re.compile(r'200|ok|successfully')執行結果:match_obj1 = regex_obj.search('vom get request and stored successfully')
result1 = match_obj1.group()
print(result1)
match_obj2 = regex_obj.search('vom get request,response 200 ok')
result2 = match_obj2.group()
print(result2)
match_obj3 = regex_obj.search('vom get request,response ok 200')
result3 = match_obj3.group()
print(result3)
successfully注意:如果search返回的march物件只有乙個結果值的話,不能用groups,只能用group200ok
regex_obj = re.compile(r'200|ok|successfully')執行結果:match_obj1 = regex_obj.search('vom get request and stored successfully')
result2 = match_obj1.groups()
print(result2)
result1 = match_obj1.group()
print(result1)
()? :可選匹配項successfully
+ :1次 或 n次 匹配
* :*前面的字元或者字串匹配 0次、n次
注意:*前面必須要有內容
regex_obj = re.compile(r'(haha)*,welcome to vom_admin system') 指haha這個字串匹配0次或者多次
regex_obj = re.compile(r'(ha*),welcome to vom_admin system') 指ha這個字串匹配0次或者多次. : 萬用字元,匹配任意乙個字元
所以常常用的組合是:.*
regex_obj = re.compile(r'(.*),welcome to vom_admin system')執行結果:match_obj1 = regex_obj.search('peter,welcome to vom_admin system')
name = match_obj1.group(1)
print(name)
peter{} : 匹配特定的次數
裡面只寫乙個數字:匹配等於數字的次數
裡面寫這樣兩個數字的,匹配3次 或 4次 或 5次,按貪心匹配法,能滿足5次的就輸出5次的,沒有5次就4次,4次也沒有才是3次
regex_obj = re.compile(r'((ha)),this is very funny')執行結果:match_obj1 = regex_obj.search('hahahaha,this is very funny')
print("結果",match_obj1.group(1))
regex_obj = re.compile(r'((ha)),this is very funny')
match_obj1 = regex_obj.search('hahahaha,this is very funny')
print("結果",match_obj1.group(1))
結果 hahahafindall():返回所有匹配到的字串的列表結果 hahahaha
regex_obj = re.compile(r'\d\d\d')列印結果:match_obj = regex_obj.findall('我是101班的,小李是103班的')
print(match_obj)
regex_obj = re.compile(r'(\d\d\d)-(\d\d\d)-(\d\d\d\d)')
match_obj = regex_obj.findall('我家**是123-123-1234,我公司**是890-890-7890')
print(match_obj)
['101', '103']:建立自己的字符集:[('123', '123', '1234'), ('890', '890', '7890')]
[abc]:包括內的字元
[^abc]:不包括內的所有字元
也可以使用:[a-za-z0-9]這樣簡寫
regex_obj = re.compile(r'[!@#$%^&*()]')執行結果:name = input("請輸入暱稱,不含特殊字元:")
match_obj = regex_obj.search(name)
if match_obj:
print("暱稱輸入不合法,包含了特殊字元:", match_obj.group())
else:
print("暱稱有效")
請輸入暱稱,不含特殊字元:*h^:開頭暱稱輸入不合法,包含了特殊字元: *
$:結尾
regex_obj = re.compile(r'(^[a-z])(.*)')執行結果:name = input("請輸入暱稱,開頭必須大寫字母:")
match_obj = regex_obj.search(name)
print(match_obj.group())
請輸入暱稱,開頭必須大寫字母:a1234sub():第乙個引數為要替換成的,第二個引數傳被替換的,返回替換成功後的字串a1234
regex_obj = re.compile(r'[!@#$%^&*()]')執行結果:match_obj = regex_obj.sub('嘿','haha,$%^,hahah')
print(match_obj)
haha,嘿嘿嘿,hahah補充一下正規表示式的表,正則太複雜了,要常看常用才能熟練
python常用模組之re模組(正則)
python種的re模組常用的5種方法,分別是re.match re.search re.findall re.split re.sub。在介紹五種方法之前,需要介紹一下正則的基礎。表示任意字元,除 n以為 轉義字元 字符集,表示取其中任意乙個字元。比如 abc d 可以匹配到ad bd cd。d ...
Python常用模組之re
2 python正則常用模組 2.1 re.match與re.search 函式說明 re.match 嘗試從字串的起始位置匹配乙個模式,如果不是起始位置匹配成功的話,match 就返回none。re.search 掃瞄整個字串並返回第乙個成功的匹配。函式語法 re.match pattern,st...
Python 正則re模組之findall 詳解
1.先說一下findall 函式的兩種表示形式 import re kk re.compile r d kk.findall one1two2three3four4 1,2,3,4 注意此處findall 的用法,可傳兩個引數 kk re.compile r d re.findall kk,one1...