淺談Python的正則表達式
Python 正則表達式
正則表達式本身是獨立于編程語言的知識,但是它又依附于編程語言,基本上我們所使用的編程語言都提供了對它的實現(xiàn),當(dāng)然了,各家的實現(xiàn)也是有一些差異的,有的支持的功能多一點,有的支持的少一點。
因為正則表達式是實踐中使用廣泛的工具,所以脫離語言的學(xué)習(xí)我認為是不靠譜的。
正則表達式的函數(shù)介紹
正則表達式主要API關(guān)系圖

這個圖是我個人總結(jié)的,我覺得基本上把這里的函數(shù)的關(guān)系弄清楚了,它們的作用是:
- match 從文本的開頭匹配正則表達式,返回匹配的對象,沒有就返回 None
- search 在整個文本中匹配正則表達式,返回第一個匹配的對象,沒有就返回 None。
- sub 利用正則表達式進行文本替換(正則表達式的功能:搜索和替換)
- findall 從整個文本中匹配正則表達式,以列表的形式返回所有匹配的結(jié)果。
- finditer 從整個文本中匹配正則表達式,以迭代器的形式返回所有匹配的結(jié)果。
- split 利用正則表達式切分文本
這里可以看出,·re· 下面有很多立即可以使用的函數(shù),然后 re.compile 下面有很多同名的函數(shù)。直接在 ·re· 模塊下的是官方提供方便使用的函數(shù),通過 re.compile 來使用是最正統(tǒng)的方式。所以,接下來的內(nèi)容,我基本上智慧使用 re.compile 及其下的方法來實現(xiàn)。
re.compile 函數(shù)
compile 函數(shù)用于編譯正則表達式,生成一個正則表達式 (Pattern)對象,供 match() 和 search() 以及其它函數(shù)使用。
語法:
re.compile(pattern[, flags])
- pattern: 一個字符串形式的正則表達式
- flags 可選,表示匹配模式,比如忽略大小寫,多行模式等,具體參數(shù)為:
- re.I 忽略大小寫
- re.L 多行模式
- re.S 即為 '.' 并且包括換行符在內(nèi)的任意字符('.' 不包括換行符)
- re.U 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依賴 Unicode 字符屬性數(shù)據(jù)庫
- re.X 為了增加可讀性,忽略空格和 ‘#’ 后面的注釋
示例:查找字符串中的所有數(shù)字
import re s = 'runoob 123 google 456' result1 = re.findall(r'\d+', s) pattern = re.compile(r'\d+') # 查找數(shù)字 result2 = pattern.findall(s) result3 = pattern.findall(s, 0, 20) print(result1) print(result2) print(result3) """ output: [‘123', ‘456'] [‘123', ‘456'] [‘123', ‘45'] """
學(xué)習(xí)模板
接下來我們要逐漸學(xué)習(xí)正則表達的內(nèi)容,這些內(nèi)容是非常有趣的!Interesting and Excited!
這里給出一個接下來會一直使用的示例模板,這個模板是這篇博客最重要的東西了,之后的內(nèi)容都會基于它進行擴展。所以,請好好理解它。
import re
# 需要進行搜索或者匹配的文本
text = """I love you yesterday and today."""
# 正則表達式
regexp = r'love'
# 編譯(對正則表達式進行編譯獲取 Pattern Object)
pattern = re.compile(regexp)
# 搜索
m = pattern.search(text)
if m:
print("匹配對象: ", m)
print("匹配的字符串: ", m.group())
print("匹配的開始位置: ", m.start())
print("匹配的結(jié)束位置: ", m.end())
print("匹配位置的元組: ", m.span())
else:
print("No match!")
# 替換
new_text = pattern.sub("hate", text)
print(new_text)

注意: 正則表達式 regexp 在開始前會使用 r 前綴,這樣做的目的是為了避免在正則表達式中大量使用轉(zhuǎn)義字符,破壞了整體的可讀性。
Python 的正則表達式包含了很多非常易用的方法,但是這里我并不會過多介紹它們。我們會一直使用上面這種模式,因為那些易用的方法只是對它的一種封裝,學(xué)習(xí)使用這種基本的方式自然就會其它的了。
匹配對象 可以獲取有關(guān)正則表達式的信息,它最重要的方法和屬性是:
| 方法/屬性 | 目的 |
| group() | 返回正則匹配的字符串 |
| start() | 返回匹配的開始位置 |
| end() | 返回匹配的結(jié)束位置 |
| span() | 返回包含匹配 (start, end) 位置的元組 |
到此這篇關(guān)于淺談Python的正則表達式的文章就介紹到這了,更多相關(guān)Python正則表達式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pyttsx3實現(xiàn)中文文字轉(zhuǎn)語音的方法
今天小編就為大家分享一篇pyttsx3實現(xiàn)中文文字轉(zhuǎn)語音的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12
python matplotlib 注釋文本箭頭簡單代碼示例
這篇文章主要介紹了python matplotlib 注釋文本箭頭簡單代碼示例,具有一定借鑒價值。2018-01-01
使用python創(chuàng)建圖片格式轉(zhuǎn)換器的實現(xiàn)步驟
本教程將指導(dǎo)如何使用 Python 編寫的圖片格式轉(zhuǎn)換工具 ImaCon_ter.py,該工具能夠?qū)D片從一種格式轉(zhuǎn)換為另一種格式,文章通過代碼示例講解的非常詳細,感興趣的小伙伴跟著小編一起來看看吧2024-12-12

