最近花時間學習了些簡單的正則知識,我將了解到的知識總結在本文中,希望對大家有所幫助
什麼是正規表示式:正規表示式可以判斷字串是否符合特定的要求,我們可以通過正規表示式來從字串中獲取我們想得到的特定的部分
正規表示式 由一些普通字元和一些元字元(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函式找到字串當中第乙個符合正則的內容,注意: 只找到第乙個findall()函式:解釋一下 『r』:raw string , r 表示字串為非轉義的原始字串,讓編譯器忽略反斜槓,也就是忽略轉義字元
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模組的講解很簡單易懂,內容不多但起碼把人領進門了,...