首頁 後端開發 Python教學 Python 正規表示式的高階用法

Python 正規表示式的高階用法

Jan 12, 2017 pm 04:25 PM

對於Python來說,學習正規就要學習模組re的使用方法。本文將展示一些大家都應該掌握的高階技巧。

編譯正規物件

re.compile函數根據一個模式字串和可選的標誌參數產生一個正規表示式物件。該物件擁有一系列方法用於正規表示式匹配和替換。用法上略有區別,舉個例子, 匹配一個字串可用如下方式:

如果使用compile,將變成:

為什麼要這麼用呢?其實就是為了提高正規匹配的速度,重複利用正規表示式物件。讓我們比較一下2種方式的效率:

可以看到第二種方式快很多。在實際的工作中你會發現越多的使用編譯好的正規表示式對象,效果就越好。 

分組(group)

你可能已經看過對要匹配的內容進行分組的用法了:

Python 正则表达式的高级用法

通過對要匹配的對象添加括號,就可以精確的對應匹配的結果了。我們也可以進行嵌套的分組:

Python 正则表达式的高级用法

分組可以滿足需求,但是有時候可讀性很差,那可以對分組進行命名:

Python 正则表达式的高级用法

現在可讀性就非常高了。

字串匹配

學過sed的同學可能見過以下替換用法:

這個1表示前面正則匹配到的結果。上面的sed也就是為匹配到的結果加上中括號。

在re模組中也存在這樣的用法:

用命名分組也是可以的:

附近匹配(Look around)

re模組也支援附近匹配,看看例子就懂了:

Python 正则表达式的高级用法

正規匹配的時候使用函數

之前我們看到的大部分內容都是匹配的是一個表達式,但是有時需求要複雜得多,尤其是在替換的時候。

舉個例子,透過Slack的API能取得聊天記錄,例如下面這句:

其中和是2個真實的用戶,但是被Slack封裝了,需要透過其他介面取得這個對應關係,

其結果類似這樣:

在解析對應關係之後,還希望吧尖括號也去掉,替換後的結果是「@xiaoming, @laolin 嗯確實是這樣的」

用正則怎麼實現呢?

Python 正则表达式的高级用法

所以pattern當然也可以是一個函數

更多Python 正規表示式的高級用法相關文章請關注PHP中文網!


🎜
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

如何解決Linux終端中查看Python版本時遇到的權限問題? 如何解決Linux終端中查看Python版本時遇到的權限問題? Apr 01, 2025 pm 05:09 PM

Linux終端中查看Python版本時遇到權限問題的解決方法當你在Linux終端中嘗試查看Python的版本時,輸入python...

在Python中如何高效地將一個DataFrame的整列複製到另一個結構不同的DataFrame中? 在Python中如何高效地將一個DataFrame的整列複製到另一個結構不同的DataFrame中? Apr 01, 2025 pm 11:15 PM

在使用Python的pandas庫時,如何在兩個結構不同的DataFrame之間進行整列複製是一個常見的問題。假設我們有兩個Dat...

如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎? 如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎? Apr 02, 2025 am 07:18 AM

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到? 如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到? Apr 02, 2025 am 07:15 AM

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

什麼是正則表達式? 什麼是正則表達式? Mar 20, 2025 pm 06:25 PM

正則表達式是在編程中進行模式匹配和文本操作的強大工具,從而提高了各種應用程序的文本處理效率。

哪些流行的Python庫及其用途? 哪些流行的Python庫及其用途? Mar 21, 2025 pm 06:46 PM

本文討論了諸如Numpy,Pandas,Matplotlib,Scikit-Learn,Tensorflow,Tensorflow,Django,Blask和請求等流行的Python庫,並詳細介紹了它們在科學計算,數據分析,可視化,機器學習,網絡開發和H中的用途

Uvicorn是如何在沒有serve_forever()的情況下持續監聽HTTP請求的? Uvicorn是如何在沒有serve_forever()的情況下持續監聽HTTP請求的? Apr 01, 2025 pm 10:51 PM

Uvicorn是如何持續監聽HTTP請求的? Uvicorn是一個基於ASGI的輕量級Web服務器,其核心功能之一便是監聽HTTP請求並進�...

Python中如何通過字符串動態創建對象並調用其方法? Python中如何通過字符串動態創建對象並調用其方法? Apr 01, 2025 pm 11:18 PM

在Python中,如何通過字符串動態創建對象並調用其方法?這是一個常見的編程需求,尤其在需要根據配置或運行...

See all articles