1. 程式人生 > >Python基礎-re正則模塊

Python基礎-re正則模塊

字符匹配 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正則模塊