標籤:數字 dff 元字元 mat re模組 返回結果 split() 使用 分割
一、簡介:
Regex:是一種小型的、高度專業化的程式設計語言,(在Python中)它內嵌在Python中,並通過re模組實現,Regex模式被編譯成
一系列的位元組碼,然後由用C編寫的匹配引擎執行。
二、字元匹配(一般字元、元字元)
一般字元:
元字元:. ^ $ * + ? { } [ ] | ( ) \
\後邊跟元字元去除特殊功能
\後邊跟一般字元實現特殊功能
\d 匹配任何十進位數;相當於[0-9]
\D 匹配任何非數字字元;相當於[^0-9]
\s 匹配任何空白字元;相當於[ \t\n\r\f\v]
\S 匹配任何非空白字元;相當於[^ \t\n\r\f\v]
\w 匹配任何字母數字字元;相當於[a-zA-Z0-9_]
\W 匹配任何非字母數字字元;相當於[^a-zA-Z0-9_]
\b 匹配一個單詞邊界,比如空格,&,#等
import re匹配第一個滿足的結果print(re.search(‘fansik‘, ‘fansik,,,,,fansik‘).group())匹配手機號:print(re.findall(‘^0?1[3|4|5|8][0-9]\d{8}$‘, ‘13141466177‘))為分組取名字print(re.search(‘(?P<id>\d{3})/(?P<name>\w{3})‘, ‘asfda521/dfdsfaa‘).group(‘id‘))print(re.search(‘(?P<id>\d{3})/(?P<name>\w{3})‘, ‘asfda521/dfdsfaa‘).group(‘name‘))取消組的優先順序print(re.findall(‘www.(\w+).com‘, ‘www.baidu.com‘))# 執行結果:[‘baidu‘]
print(re.findall(‘www.(?:\w+).com‘, ‘www.baidu.com‘))# 取消優先順序後的執行結果:[‘www.baidu.com‘]
Regex的方法:
findall():所有結果都返回到一個列表裡
search():返回匹配到的第一個對象(object),對象可以調用group()返回結果
match():只在字串開始匹配匹配
print(re.match(‘fansik‘, ‘fansikfanjinbao‘).group())
split():以指定字元分割字串
print(re.split(‘ma‘, ‘fansikmafanjinbaomazhansanmalisi‘))執行結果:[‘fansik‘, ‘fanjinbao‘, ‘zhansan‘, ‘lisi‘]re.sub():字元替換print(re.sub(‘ma‘, ‘df‘, ‘fansikmafanjinbaomazhansanmalisi‘))執行結果:fansikdffanjinbaodfzhansandflisire.comile():編譯一個規則,使用與該規則被反覆使用的情況下obj = re.compile(‘\.com‘)print(obj.findall(‘fansik.com‘))
常用的匹配規則
手機:/^0?1[3|4|5|8][0-9]\d{8}$/
固話:/^0[\d]{2,3}-[\d]{7,8}$/
電子郵箱:/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/
/^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/
使用者名稱:/^[a-z0-9_-]{3,16}$/
密碼:/^[a-z0-9_-]{6,18}$/
URL:/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/
Python基礎-re正則模組