Python正規表示式

2021-08-21 13:37:44 字數 2899 閱讀 1580

最近花時間學習了些簡單的正則知識,我將了解到的知識總結在本文中,希望對大家有所幫助

什麼是正規表示式:正規表示式可以判斷字串是否符合特定的要求,我們可以通過正規表示式來從字串中獲取我們想得到的特定的部分

正規表示式 由一些普通字元和一些元字元(metacharacters)組成。普通字元包括大小寫的字母和數字,而元字元則具有特殊的含義,下面我給出一些元字元的表達的含義:

\d表示任意的一位數字

\w表示任意的字母和數字

\s表示空格

.表示任意的內容 可以是字母也可以是數字,特殊字元等

*表示內容出現0次到多次

+表示內容出現1次到多次

表示內容出現0次到1次

^表示以***x開頭

$表示以***x結尾

表示內容最少重複n次最多重複m次

.* \ .+貪婪模式,正規表示式預設為貪婪模式,盡量找到所有符合要求的內容

.*?非貪婪模式,找到第乙個符合要求的內容

元字元還有很多,我就不一一枚舉了。

在python中使用正規表示式之前應先引入re模組:

import re
下面列舉幾個正規表示式常用的函式:

compile()函式和match()函式:

import re

pattern = re.compile('(\d+)(\w+)')

content = '123helloworld'

result = re.match(pattern,content)

if result:

#返回的是乙個匹配的物件

print(result)

#返回符合要求的全部內容

print(result.group(0))

print(result.group(1))

執行結果為:

<_sre.sre_match object; span=(0, 13), match='123helloworld'>

123helloworld

123helloworld

這裡為大家解釋一下compile(),match(),和group()

compile是編譯的意思,compile 函式用於編譯正規表示式,生成乙個正規表示式物件,供其他函式使用。()裡面寫正規表示式的內容。

match是匹配的意思,match函式從字串的起始位置匹配乙個模式,如果不是起始位置匹配成功的話,match()就返回none

匹配成功re.match方法返回乙個匹配的物件,否則返回none。我們可以使用group(num) 或 groups() 匹配物件函式來獲取匹配表示式

group:組,正規表示式中每乙個()就是乙個group組

re.search()函式:掃瞄整個字串並返回第乙個成功的匹配

pattern = re.compile(r'you')

result = pattern.search('i love you,i miss you,i hate you')

print(result)

pattern = re.compile(r'i')

result = pattern.search('i love you')

print(result)

結果為:
<_sre.sre_match object; span=(7, 10), match='you'>

<_sre.sre_match object; span=(0, 1), match='i'>

search函式找到字串當中第乙個符合正則的內容,注意: 只找到第乙個

解釋一下 『r』:raw string , r 表示字串為非轉義的原始字串,讓編譯器忽略反斜槓,也就是忽略轉義字元

findall()函式:

content = '12345,上山打老虎,老虎沒打著,打只小松鼠,55555'

pattern = re.compile(r'\d')

result = pattern.findall(content)

print(result)

結果為:

['12345', '55555']
findall函式在字串中找到正規表示式所匹配的所有子串,並返回乙個列表,如果沒有找到匹配的,則返回空列表

re.sub()函式:

content = '楊過對戰金輪法王,郭靖觀戰'

key_word = [(r'楊\s*過','呂布'),

(r'金輪法王','服部半藏'),

(r'郭靖','東方不敗')]

for pattern,replace in key_word:

pattern = re.compile(pattern)

content = pattern.sub(replace,content)

print(content)

結果為:

呂布對戰金輪法王,郭靖觀戰

呂布對戰服部半藏,郭靖觀戰

呂布對戰服部半藏,東方不敗觀戰

sub用於替換字串中的匹配項

python正規表示式元字元 正規表示式

字元 描述將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...

Python 正規表示式

1.在python中,所有和正規表示式相關的功能都包含在re模組中。2.字元 表示 字串的末尾 如 road 則表示 只有當 road 出現在乙個字串的尾部時才會匹配。3.字元 表示 字元中的開始 如 road 則表示 只有當 road 出現在乙個字串的頭部時才會匹配。4.利用re.sub函式對字串...

Python正規表示式

學習python自然而然就不得不面對正規表示式這個難題。當初在沒有學習python之前,自己也曾經嘗試著學習過正規表示式,但是那時候感覺很麻煩,很難懂,結果就是不了了之。但是現在學習python我用的書是 python基礎教程 第二版 這本書中對re模組的講解很簡單易懂,內容不多但起碼把人領進門了,...