日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中正则表达式的默认匹配方式为_Python模式匹配与正则表达式

發布時間:2025/3/15 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中正则表达式的默认匹配方式为_Python模式匹配与正则表达式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.1 不用正則表達式來匹配文本

假設我希望在一個字符串中找到電話號碼,電話號碼的格式為三個數字,一個短橫線,四個數字,一個短橫線,四個數字 比如:131-3310-5293和132-2670-9864

def IsTruePhoneNumber(content):

if(len(content))!=13: #首先判斷號碼長度是否超過13,算上短橫線長度

return False

for i in range(0,3): #判斷前三位字符是否為數字

if not content[i].isdecimal():

return False

if content[3]!='-': #判斷第四位字符是否為短橫線,不是則返回錯誤

return False

for i in range(4,8):

if not content[i].isdecimal():

return False

if content[8]!='-':

return False

for i in range(9,13):

if not content[i].isdecimal():

return False #python里面嚴格區分False和True的首字母大寫

return True

account='Please call me at 131-3310-5293 and my another telephone number is 132-2670-9864'

for i in range(len(account)):

number=account[i:i+13]

if IsTruePhoneNumber(number):

print('Phone Number is '+number)

print('It is accomplished')

#print('There will be a piece of phonenumber:')

#print(IsTruePhoneNumber(content))

結果如圖:

1.2 用正則表達式查找文本模式

正則表達式,簡稱為regex

,是文本模式的描述方法。例如,\d 是一個正則表達式,表示一位數字字符,即表示任何一位 0 到 9 的數字。Python 使用正則表達式 \d\d\d-\d\d\d-\d\d\d\d,來匹配前面的函數IsTruePhoneNumber()與之相對應的同樣文本:3 個數字、 一個短橫線、4個數字、1個短橫線、4 個數字。所有其它字符串都不能匹配 \d\d\d-\d\d\d\d-\d\d\d\d 正則表達式。

正則表達式可以更加復雜

,添加一個用得著的功能,比如在一個模式后面添加花括號\d{3},意思為匹配這個模式三次,可以應用在配對密碼方面

1.2.1創建正則表達式對象

Python中所有的正則表達式都在re模塊中,所以必須先通過import來引入re模塊

向re模塊中的re.compile()中創建一個字符串作為參數來表示正則表達式,此時將返回一個regex對象,比如,創建一個regex對象來匹配上一個IsPhoneTRUENumber()函數

1.2.2 匹配Regex對象

Regex的research()方法用來尋找與正則表達式匹配的所有對象,如果沒有找到,research()方法將返回None,顯示錯誤。如果找到,search()方法將返回一個Match對象。Match對象有一個group()方法用來返回尋找到的已匹配的文本

1.3 用正則表達式匹配更多模式

1.3.1 利用括號分組

假如分離電話號碼中的運營商號段,前三位可以區別是哪個運營商,電信,聯通或者移動,可以將號碼分為兩段。正則表達式作為參數的字符串中的第一對括號是第 1 組,第二對括號是第 2 組。通過 group() 方法匹配對象傳入整數1或2,就可以取得匹配文本的不同部分。向 group()方法傳入0或不傳入參數,將返回整個匹配的文本。

如果想要一次性得到分離的兩段字符串,就可以利用groups()方法,也可以采用兩個變量來利用groups()方法分別賦值第一段和第二段

如果

需要在正則表達式中添加括號,則可以用轉義字符\

1.3.2 利用管道匹配多個分組

字符

|

稱為管道,用來匹配多個分組中的一個時,類似于C語言中的或,就可以使用它來進行此項操作,但是返回的是第一個匹配到的對象

也可以用來匹配多個模式中的一個,作為正則表達式的一部分,比如:everywhere,everyone,everytime,everyday。提取它們共同的前綴 every(如果需要匹配換到字符,則添加倒斜杠 |)

1.3.3 利用問號實現選擇匹配

(字符串)?字符串

為選擇模式,即添加?前面的或者不添加問號前面的。?即匹配這個?前的分組零次或一次。比如:

還可以進行多模式匹配

1.3.4 利用星號實現匹配

利用

*

實現匹配*前面的分組零次或多次

1.3.5 利用加號實現匹配

利用+實現分組匹配,即+前的分組出現一次或多次,至少出現一次,如果未出現,則返回None

1.3.6 用花括號實現匹配

花括號可以規定分組的匹配次數,不符合要求則返回空或者規定的最大模式匹配次數的模式,分組中只能包含要求匹配的模式,否則返回空

格式為(模式){匹配次數} 比如(模式){3,5}則表示模式匹配次數從3到5 (){,5}則表示模式匹配次數從0到5 (){3,}則表示模式匹配次數為從3到更多次數

1.4 貪心匹配和非貪心匹配

貪心匹配盡可能匹配最多的實例,非貪心匹配盡可能匹配最少的實例

非貪心匹配在花括號后加?(問號)在正則表達式末尾加,或者是你想選擇的模式后加

1.5 findall()方法

Regex對象除了有search()方法,還有findall()方法,search()方法返回的是第一次匹配正則表達式的模式,findall()方法返回的是正則表達式匹配到的所有模式。

(1)如果正則表達式中沒有分組,則返回的為包含字符串的列表

(2)如果正則表達式中有分組,則返回的是包含元組的列表

(1)

(2)

1.6 字符分類

\d 0-9內的任意數字

\D 除0-9內的任意數字

\w 任何字母、數字或下劃線字符

\W 除字母、數字或下劃線以外的任何字符

\s 空格、制表符或換行符

\S 除空格、制表符或換行符以外的任何字符

正則表達式\d+\s\w+匹配的文本有一個或多個數字(\d+),不加加號默認為匹配一個,接下來是一個空白字 符(\s),接下來是一個或多個字母/數字/下劃線字符(\w+)。findall()方法將返回所有匹 配該正則表達式的字符串,放在一個列表中。

1.7 建立自己的字符分類

可以使用方括號來建立自己想匹配的正則表達式,格式為[匹配模式]

(1)也可以使用短橫線來劃定范圍,比如[0-99a-zA-Z],表示為從0到99,從a到z的所有小寫字母,A到Z的所有大寫字母

(2)在方括號內,普通的正則表達式符號不會被解釋,不需要加轉義字符,可以直接使用,例如 [0-5,]不需要這樣寫,直接寫為[0-5,]

(3)還可以使用

^

來表達非字符類,比如[^ban]來表示為匹配除ban以外的字符

(1)效果圖

(2)效果圖

(3)效果圖

1.8插入字符和美元字符

插入字符

^

表示模式從文本開始處匹配,美元字符

$

表示文本以該模式結束,插入字符和美元字符同時使用意味著該文本等于該正則表達式,如果不匹配則不返回

以$為結尾的正則表達式

同時以^和$結尾的正則表達式

正則表達式 '^\d+$'表示整個文本為數字

1.9 通配字符

在正則表達式中,

.

(句點)字符稱為“通配符”。它匹配除了換行之外的所有字符。. 字符只能代替一個字符

1.9.1 .* 匹配所有字符串

(星號)表示

以前的字符出現零次或多次,.(句號)表示匹配除換行外的所有字符,即匹配所有字符串

注意大小寫

(.

?)意味匹配盡可能小的模式

<.

>意為“匹配一個左尖括號,接下來是任意字符,接下來是一個右尖括號”,匹配盡可能多的模式。加問號匹配盡可能少的模式

1.9.2 利用句點字符匹配換行(re.DOTALL)

如果不加re.DOTALL,則只匹配換行符以前的。加re.DOTALL后,則匹配所以字符串

1.10 大小寫不區分的匹配

在驗證圖片中字母的時候,只涉及匹配字母,不關心它們是大寫或小寫。要讓正則表達式 不區分大小寫,可以向 re.compile()傳入 re.IGNORECASE 或 re.I,作為第二個參數。

1.11 利用sub()方法替換字符串

正則表達式不但可以找到文本模式,而且可以用新的文本替換掉這些模式。Regex 對象的 sub()方法需要傳入兩個參數。第一個參數是一個字符串,用于取代發現的匹配。第二個參數是一個字符串,即 正則表達式,用于匹配需要找到的字符串。sub()方法返回替換完成后的字符串。

1.12管理復雜的正則表達式

如果要匹配的文本模式很簡單,正則表達式就很好。但匹配復雜的文本模式, 可能需要長的、復雜的正則表達式。你可以告訴 re.compile(),忽略正則表達式字符串中的空白符和注釋,從而緩解這一點。要實現這種詳細模式,可以向 re.compile() 傳入變量 re.VERBOSE,作為第二個參數。

例如:只需在正則表達式每行后面加 #注釋即可

1.13 組合使用類似變量re.IGNORECASE,可以使用管道符

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的python中正则表达式的默认匹配方式为_Python模式匹配与正则表达式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。