Python正規表示式和re庫的相關內容介紹(程式碼範例)
本篇文章帶給大家的內容是關於Python正規表示式和re庫的相關內容介紹(程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
正規表示式是定義搜尋模式的字元序列。通常這種模式被字串搜尋演算法用於字串上的「查找」或「尋找和取代」操作,或用於輸入驗證。
1. 正規表示式的語法
#. 表示任何單一字元
- ##[]字元集,對單一字元給出取值範圍
- [^] 非字元集,對單一字元給出排除範圍
- *前一個字元0次或無限次擴展
- 前一個字元1次或無限次擴充
- ?前一個字元0次或1次擴展
- |左右表達式任一
- #{m}擴充前一個字元m次
- #{m,n}擴展前一個字元m至n次
- ^匹配字串開頭 ##$符合字串結尾
- ()分組標記,內部只能使用|運算子
- d數字,等價於[0-9]
- w單字字符,等價於[A-Z,a-z,0-9]
Re函式庫是python的標準函式庫,主要用於字串匹配,呼叫方法:import re
2.1. 正規表示式字串的型別
re函式庫採用raw string類型來表示正規表示式,表示為
r'text'
#raw string是不包含對轉義符的再次轉義的字串,總而言就是string會對字元轉義,而raw string不會,因為在正規表示中會出現轉義符號,所以避免繁瑣我們使用raw string
2.2. Re函式庫主要功能函數
- #re.search
()在一個字串中搜尋正規表示式的第一個位置,傳回match物件
- #re .match()
從字串的起始位置起符合正規表示式,傳回match物件
- re.findall()
搜尋字串,以清單類型傳回全部能符合的子字串
- re.split()
將一個字串依照正規表示式符合結果分割,傳回清單類型
- re.finditer()
搜尋字串,傳回一個符合結果的迭代類型,每個迭代元素是match物件
- re.sub()
在一個字串中取代所有符合正規表示式的子字串,並傳回替換後的字串
2.2.1 . re.search(pattern, string, flags=0)
在一個字串中搜尋正規表示式的第一個位置,傳回match物件
- pattern : 正規表示式的字串或原生字串表示
- string : 待匹配字串
- flags : 正規表示式使用時的控制標記
- re.I re.IGNORECASE 忽略正規表示式的大小寫,[A‐Z]能夠匹配小寫字元
- re .M re.MULTILINE 正規表示式中的^運算子能夠將給定字串的每行當作匹配開始
- re.S re.DOTALL 正規表示式中的.操作符能夠匹配所有字符,預設匹配除換行外的所有字符
- 舉例說明:
import re match = re.search(r'[1-9]\d{5}', 'BIT 100081') if match: print(match.group(0)) 结果为100081
2.2.2. re.match(pattern, string, flags= 0)
從字串的起始位置起符合正規表示式,傳回match物件
參數同search函數範例說明:
import re match = re.match(r'[1-9]\d{5}', 'BIT 100081') print(match.group(0)) 结果会报错,match为空,因为match函数是 从字符串开始位置开始匹配,因为从开始位置没有匹配到,所以为空
2.2.3. re. findall(pattern, string, flags=0)
搜尋字串,以清單類型傳回全部能符合的子字串
參數同search範例說明:
import re ls=re.findall(r'[1-9]\d{5}', 'BIT100081 TSU100084') print(ls) 结果为['100081', '100084']
2.2 .4. re.split(pattern, string, maxsplit=0, flags=0)
將一個字串依照正規表示式比對結果分割傳回清單類型
- #maxsplit : 最大分割數,剩餘部分作為最後一個元素輸出
- 舉例說明:
import re re.split(r'[1-9]\d{5}', 'BIT100081 TSU100084') 结果['BIT', ' TSU', ' '] re.split(r'[1-9]\d{5}', 'BIT100081 TSU100084', maxsplit=1) 结果['BIT', ' TSU100081']
2.2.5. re.finditer(pattern, string, maxsplit =0, flags=0)
搜尋字串,傳回一個符合結果的迭代類型,每個迭代元素是match物件
參數同search舉例說明:
import re for m in re.finditer(r'[1-9]\d{5}', 'BIT100081 TSU100084'): if m: print(m.group(0)) 结果为 100081 100084
2.2.6. re.sub(pattern, repl, string, count=0, flags=0)
在一個字串中替換所有符合正規表示式的子字串傳回替換後的字串
- repl : 取代符合字串的字串
- count : 符合的最大替換次數
- 舉例說明:
import re re.sub(r'[1-9]\d{5}', ':zipcode', 'BIT100081 TSU100084') 结果为 'BIT:zipcode TSU:zipcode'
2.3 Re函式庫的另一種等價用法(物件導向)
rst=re.search(r'[1-9]\d{5}', 'BIT 100081') 函数式的调用,一次性操作
pat=re.compile(r'[1-9]\d{5}') rst=pat.search('BIT 100081') 编译后多次操作
regex=re.complie(pattern,flags=0)
regex也有以上六種用法
2.4 Re函式庫的Match物件
Match物件是是一次符合的結果,包含符合的許多資訊
以下是Match物件的屬性
- .string 待符合的文字
- ##.re 符合時所使用的patter物件(正規表達式)
.pos 正規表示式搜尋文字的起始位置
.endpos 正規表示式搜尋文字的結束位置
以下是Match物件的方法
#.group(0) 取得符合後的字串
#.start() 匹配字串在原始字串的開始位置
.end() 匹配字串在原始字串的結束位置
.span() 傳回(.start(), .end())
#2.5 Re函式庫的貪婪匹配和最小匹配
當正規表示式可以符合長短不同的多項時,回傳哪一個呢? Re庫預設採用貪婪匹配,即傳回匹配最長的子字串
最小匹配
- ##*? 前一個字元0次或無限次擴展,最小匹配
- ? 前一個字元1次或無限次擴展,最小匹配
- ??前一個字元0次或1次擴展,最小匹配
- {m,n}? 擴展前一個字元m至n次(含n),最小匹配
只要長度輸出可能不同的,都可以透過在運算子後面增加?變成最小匹配
#
以上是Python正規表示式和re庫的相關內容介紹(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。
