今天學習正則表達式遂鹊,用于查找匹配
什么是正則表達式摔踱?
正則表達式(regex)又是規(guī)則表達式,正則表達式通常被用來檢索蛛壳、替換那些符合某個模式(規(guī)則)的文本,例如word中的查找與替換所刀,正則表達式是對字符串操作的一種邏輯公式衙荐,利用特定字符的組合,組成規(guī)則的類似字符串浮创。例如忧吟, \d 是一個正則表達式, 表示一位數(shù)字字符斩披,即任何一位 0 到 9 的數(shù)字溜族。
如果你想要知道打來的電話是否是你需要的電話號碼,你可能不是很清楚全部的電話號碼垦沉,只知道部分號碼煌抒,(比如號碼有415-555-4242,或者(415) 555-4242等不同的電話格式)那么怎么通過正則表達式去判斷
-
1.用正則表達式查找文本模式
415-555-4242如果用正則表達模式可以表達為\d\d\d-\d\d\d-\d\d\d\d,或者加上{ }表示次數(shù)厕倍,可以表達為\d{3}-\d{3}-\d{4},從而匹配正確電話格式
1.1正則表達式的函數(shù)模塊re寡壮,利用re模塊創(chuàng)建正則表達式,利用re.compile返回對象到Regex,即phoneNumRegex中包含一個Regex對象
import re
phoneNumRegex = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')
1.2匹配Regex,利用 search()方法查找傳入的字符串况既, 尋找該正則表達式的所有匹配这溅。如果沒有找到該正則表達模式的就返回None,如果找到該正則表達模式棒仍,利用group()則返回實際匹配對象悲靴。
phoneNumRegex = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')
mo=phoneNumRegex.search('My number is 415-555-4242.')
print('Phone number found: ' + mo.group())
-
2.匹配文本
如果想要把(415) 555-4242該電話的區(qū)號分開,則需要在正則表達式中添加括號降狠,創(chuàng)建分組对竣,然后用group()匹配對象。
2.1如果想要篩選匹配的對象有括號榜配,可以用\進行轉義
2.2利用管道命令 |進行分組否纬,相當于或的意思
指定相同的字符,如白色白天白雪都有白蛋褥,則正則表達式為:
2.3使用临燃?可以選擇可選匹配
2.4使用*可實現(xiàn)匹配零次或者多次,而+則是實現(xiàn)匹配一次或者多次
-
3.使用findall()尋找匹配對象烙心,相當于search()
其中膜廊,如果匹配的是沒有分組的正則表達式,那么返回的為列表淫茵,如果有分組則返回的為元組