1. 程式人生 > >Python基礎語法 - 正則表達式

Python基礎語法 - 正則表達式

Python3.6.5 re模塊

概述

正則表達式是一個特殊的字符序列,它常常用於檢查是否與某種模式匹配。第八節課主要介紹了從以下幾方面介紹了Python正則表達式的用法。
(1)re模塊的使用
(2)字符匹配、數量表示、邊界表示
(3)正則表達式的高級用法
(4)貪婪與非貪婪模式

re模塊

(一)match(正則表達式,待匹配字符串)
(1)采用從左向右逐項匹配,從起始位置起。
(2)用於正則匹配檢查,如果“待匹配字符串”能夠匹配“正則表達式”,則match方法返回匹配對象,否則返回None

import re #導入re模塊

#從起始位置開始匹配
rs = re.match("51cto", "51cto.com") 
print(rs)

#不從起始位置開始匹配
rs = re.match("cn", "51cto.com") 

運行結果:

<_sre.SRE_Match object at 0x02B33FA8>
None

(二)group()方法 :用來返回字符串的匹配部分

import re

rs = re.match("51cto", "51cto.com")
print(rs.group())

運行結果:

51cto

字符匹配、數量表示、邊界表示

(一)單字符匹配
技術分享圖片
(1). 匹配除"\n"之外的任意單個字符

import re

rs = re.match(".","a")
print(rs.group())

rs = re.match(".","1")
print(rs.group())

rs = re.match("...","abc")    #多個字符
print(rs.group())

rs = re.match(".","\n")        #\n字符
print(rs)

運行結果:

a
1
abc
None

(2)\s:匹配任意空白字符,如空格,制表符“\t”,換行符“\n”

import re
rs = re.match("\s","\t")
print(rs)
rs = re.match("\s","\n")
print(rs)
rs = re.match("\s"," ")
print(rs)

(3)\S:匹配任意非空字符;和\s模式相反

rs = re.match("\S","\t")
print(rs)
rs = re.match("\S","abc")  #匹配單個字符,從起始位置
print(rs.group())

運行結果:

None
a

其他單字符匹配用法不一一列舉。

(二)數量表示
技術分享圖片
(1)* 出現次數 n >= 0

import re

rs = re.match("1\d*", "1234567")     #起始是1,後面int出現任意次
print(rs.group())

rs = re.match("1\d*", "1234567abc")     #起始是1,後面int出現任意次
print(rs.group())

運行結果:

1234567
1234567

(三)邊界表示
(1)字符串與單詞邊界
(2)匹配分組

正則表達式的高級用法

貪婪與非貪婪模式

作業題

奶茶館價格結算系統優化:
1、 使用正則表達式判斷顧客輸入的手機號是否符合手機號設置規則:
1) 以數字 1 開頭
2) 第二位為 3578 中的任意數字
3) 其余 9 位為 0-9 任意數字
2、 輸出手機號運營商,判斷規則:
? 移動運營商:手機號前三位為 134、135、136、137、138、139、150、151、152、157、 158、159、178、182、183、184、187、188
? 聯通運營商:手機號前三位為 130、131、132、155、156、176、185、186
? 電信運營商:手機號前三位為 133、153、173、177、180、181、189、199

3、 使用正則表達式判斷輸入奶茶編號,如果不在 1-5 範圍內,輸出: Woops!我們只售賣以上五種奶茶哦!新口味敬請期待! 並將判斷過程設置為類中的方法。

Python基礎語法 - 正則表達式