Python正規表示式 re 用法

2021-10-08 09:50:04 字數 3166 閱讀 4206

re模組:匹配開頭/結尾(^/$)

re模組的基礎用法

email_list = ["[email protected]", "[email protected]", "[email protected]"]

for email in email_list:

ret = re.match("[\w]@163\.com$", email) \.代表只是乙個點 $代表以***結尾的字串

if ret:

print("%s ---是符合規定的郵件位址」 % email)

else:

print("%s ---不符合要求" % email)

結果

[email protected]            # ---是符合規定的郵件位址

[email protected] # ---不符合要求   # 如果沒有$,這個字串會匹配出來

[email protected] # ---不符合要求

字元功能

^匹配字串開頭

$匹配字串結尾

|匹配左右任意乙個表示式

(ab)

將括號中字元作為乙個分組

\num

引用分組num匹配到的字串

(?p)

分組起別名

(?p=name)

引用別名為name分組匹配到的字串

[\u4e00-\u9fa5] //匹配中文字元

^[1-9]\d*$    //匹配正整數

^[a-za-z]+$   //匹配由26個英文本母組成的字串

^[a-z]+$      //匹配由26個英文本母的大寫組成的字串

^[a-z]+$      //匹配由26個英文本母的小寫組成的字串

^[a-za-z0-9]+$ //匹配由數字和26個英文本母組成的字串

2、需求:不是以4、7結尾的手機號碼(11位)

import re

tels = ["13100001234", "18912344321", "10086", "18800007777"]

for tel in tels:

ret = re.match("1\d[0-3,5-6,8-9]", tel)

if ret:

print(ret.group())

else:

print("%s 不是想要的手機號" % tel)

結果

13100001234 不是想要的手機號

18912344321

10086 不是想要的手機號

18800007777 不是想要的手機號

3、需求:匹配出163、126、qq郵箱

#coding=utf-8

import re

ret = re.match("\w@163\.com", "[email protected]」)  

print(ret.group())                               

# 結果: [email protected]

ret = re.match("\w@(163|126|qq)\.com", "[email protected]")

if ret:

print(ret.group())

else:

print("不是163、126、qq郵箱")                  

# 結果: 不是163、126、qq郵箱

4、需求:提取區號和**號碼

import re

ret = re.match("([^-]*)-(\d+)", "010-12345678")

print(ret.group())

print(ret.group(1))

print(ret.group(2))

結果如下:

010-12345678

01012345678

^在[ ]裡面代表非的含義:

例如:[^-]*   *代表前所有字元0個或者多個,非-的字串

[^abc]  代表非a、且非b 、且非c的字元

1、正規表示式中,\d 匹配乙個數字字元。等價於 [0-9]。

2、相反地,正規表示式中,\d 匹配乙個非數字字元。等價於 [^0-9]。

5、需求:匹配出0-100之間的數字

import re

ret = re.match("[1-9]?\d","8」) # ?匹配前面的字元出現1次或者0次 類似78也可以匹配

print(ret.group()) 

# 結果:8

ret = re.match("[1-9]?\d$|100","78")

print(ret.group())                          

# 結果: 78

ret = re.match("[1-9]?\d$|100","100")

print(ret.group())                        

# 結果: 100

\w 匹配字母或數字或下劃線或漢字(具體與字符集有關),^\w 表示相反匹配。

import re

s = "string. with. punctuation?"

# 如果空白符也需要過濾,使用 r'[^\w]'

s = re.sub(r'[^\w\s]','',s)

re.split

s = "標準黑 標準白 油黃色,珍珠白油黃色,標準黑-1;等,紅芽粉-7,深鳶尾藍,如圖"

color_list = re.split("[,, ]", s)

color_list

['標準黑', '標準白', '油黃色', '珍珠白油黃色', '標準黑-1;等', '紅芽粉-7', '深鳶尾藍', '如圖']

python 正規表示式 re

match 和 search 的區別 match是從字串開頭匹配,而search是在整個字串中匹配。如 p re.compile a z p.match message none 因為開頭是 因此無法匹配 而 m p.search message print m re.matchobject ins...

python正規表示式 re

re.match 嘗試從字串的開始匹配乙個模式,如 下面的例子匹配第乙個單詞。import retext jgood is a handsome boy,he is cool,clever,and so on.m re.match r w s text ifm print m.group 0 n m...

python正規表示式(re)

在python中re模組用於對正規表示式 regular expression 的支援。正規表示式是可以匹配文字片段的模式。一 正規表示式的書寫 1 萬用字元 點 可以匹配任何字元 除了換行符 如 ike 可以匹配 bike like 等 2 對特殊字元進行轉義 在正規表示式中如果是引用特殊字元作為...