Python基礎-re正則模塊
阿新 • • 發佈:2017-10-19
字符匹配 mil afa logs 電子郵箱 空白字符 手機 常用 所有
一、簡介:
正則表達式:是一種小型的、高度專業化的編程語言,(在Python中)它內嵌在Python中,並通過re模塊實現,正則表達式模式被編譯成
一系列的字節碼,然後由用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‘]
正則表達式的方法:
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‘))
執行結果:
fansikdffanjinbaodfzhansandflisi
re.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正則模塊