首頁 後端開發 Python教學 Python中的正規表示式及其常用匹配函數用法簡介

Python中的正規表示式及其常用匹配函數用法簡介

Jul 25, 2023 pm 05:17 PM
python 正規表示式 (regexp)

/簡介/

#    Python 自1.5版本起增加了re 模組,它提供Perl風格的正規表示式模式。 re 模組使得Python 語言擁有全部的正規表示式功能。

    compile 函數根據一個模式字串和可選的標誌參數產生一個正規表示式物件。該物件擁有一系列方法用於正規表示式匹配和替換。

    re 模組也提供了與這些方法功能完全一致的函數,這些函數使用一個模式字串做為它們的第一個參數。


/re.match函數/

    re.match 嘗試從字串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match()就回傳none。語法如下圖所示:

re.match(pattern, string, flags=0)
登入後複製

    「pattern」符合的正規表示式「string」要符合的字串「flags」標誌位元。

    符合成功re.match方法傳回一個符合的對象,否則回傳None。

    我們可以使用group(num)或 groups() 來匹配物件函數來取得匹配表達式。

group(num=0) 匹配的整个表达式的字符串,“group()”可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。

下图是个实际例子:

Python中的正規表示式及其常用匹配函數用法簡介

输出结果如下图所示:

Python中的正規表示式及其常用匹配函數用法簡介


/检索和替换/

Python 的re模块提供了re.sub用于替换字符串中的匹配项。语法如下所示:

re.sub(pattern, repl, string, count=0, flags=0)
登入後複製

参数:

pattern : 正则中的模式字符串。

repl : 替换的字符串,也可为一个函数。

string : 要被查找替换的原始字符串。

count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。

flags : 编译时用的匹配模式,数字形式。

前三个为必参数,后两个为可选参数。

下图是个实际例子:

Python中的正規表示式及其常用匹配函數用法簡介

输出结果如下图所示:

Python中的正規表示式及其常用匹配函數用法簡介


/compile函数/

compile 函数用于编译正则表达式,供match() 和 search() 这两个函数使用。语法格式为:

re.compile(pattern[, flags])
登入後複製

参数:

pattern : 一个字符串形式的正则表达式

flags 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:

re.I 忽略大小写

    re.L 表示特殊字元集\w,\W, \b, \B, \s, \S 依賴目前環境

    re.M 多重行模式

    re.S 即為' . '且包含換行符在內的任一字元(' . '不包括換行符)

#    re.U 表示特殊字元集\w,\W, \b, \B, \d, \D, \s, \S 依賴Unicode 字元屬性資料庫

re.X 為了增加可讀性,忽略空格和'# '後面的註解

#/正規表示式物件/

    re.RegexObject:re.compile() 傳回RegexObject 物件。

    re.MatchObject:group() 傳回 RE 相符的字串。

        start() 返回匹配開始的位置

        end() 返回匹配結束的位置

        span() 返回一個元組包含符合(開始,結束) 的位置

##/正規表示式修飾符- 可選標誌/

#/正規表示式修飾符- 可選標誌/###### ###

    正規表示式可以包含一些可選標誌修飾符來控制符合的模式。修飾符被指定為一個可選的標誌。多個標誌可以透過位元 OR(|) 它們來指定。如re.I| re.M 被設定成I 和M 標誌:

符合包含換行在內的所有字元re.U

re.I

#使匹配對大小寫不敏感

#re.L

#做本地化識別(locale-aware#)符合

re.M

多行匹配,影響# ^ $

re.S

使 .

根據Unicode#字元集解析字元。這個標誌影響

### \w, \W, \b, \B.######

re.X

#該標誌透過給予你更靈活的格式以便你將正規表示式寫得更容易理解。


/正規表示式模式/

#    模式字串使用特殊的語法來表示一個正規則表達式:

    字母和數字表示他們自己。一個正規表示式模式中的字母和數字匹配相同的字串。

    多數字母和數字前加上一個反斜線時會有不同的意義。

    標點符號只有在轉義時才符合自身,否則它們表示特殊的意義。

反斜線本身需要使用反斜線進行轉義。

    由於正規表示式通常都包含反斜線,所以你最好使用原始字串來表示它們。模式元素(如 r'\t',等價於 \\t )符合對應的特殊字元。

    下表列出了正規表示式模式語法中的特殊元素。如果你使用模式的同時提供了可選的標誌參數,某些模式元素的意義會改變。

Python中的正規表示式及其常用匹配函數用法簡介

正規表示式實例

    字元符合

##實例

###描述######################## #python######

符合 "python".

#

字符类

Python中的正規表示式及其常用匹配函數用法簡介

/实际应用/

以猫眼电影为例。我们需要获取(电影的名字作者,上映时间)等等都可以用正则表达式来解析。

Python中的正規表示式及其常用匹配函數用法簡介

分析一下,利用正则表达式提取。Python中的正規表示式及其常用匹配函數用法簡介

可以看到我们要的名字在一个a里面,而他们被一个div包裹着。

我们把div想象成一个盒子,可以看到div里面还有一个div 我们可以先找他上面一层的div是一个表单

再找到它的上一层的盒子div
一般来说我们找到前两层就可以找到我们要的结果。如果不对就再找几层。

分析完再实际操作一下:

pattern = re.compile(&#39;<div>.*?title="(.*?)".*?class="star">(.*?)</p>.*?releasetime">(.*?)</p>&#39;,re.S)
登入後複製

    (.*?)表示我们要的内容

(.*?)

里面的主演也是我们要的这样我们就可以得到我们想要得多个数据。


/小结/

    1. 正規表示式適合一些需要取得多個資料的場景。它能夠以更快捷的方式去取得我們想要的資料。

    2. 本文主要介紹了正規表示式,及其基本用法,具體每個字元的用法,可以參考前言裡邊的正規表示式系列文章,希望能夠幫助大家更好的了解正規表示式的用法。

以上是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.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前 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)

PS一直顯示正在載入是什麼原因? PS一直顯示正在載入是什麼原因? Apr 06, 2025 pm 06:39 PM

PS“正在載入”問題是由資源訪問或處理問題引起的:硬盤讀取速度慢或有壞道:使用CrystalDiskInfo檢查硬盤健康狀況並更換有問題的硬盤。內存不足:升級內存以滿足PS對高分辨率圖片和復雜圖層處理的需求。顯卡驅動程序過時或損壞:更新驅動程序以優化PS和顯卡之間的通信。文件路徑過長或文件名有特殊字符:使用簡短的路徑和避免使用特殊字符。 PS自身問題:重新安裝或修復PS安裝程序。

如何加快PS的載入速度? 如何加快PS的載入速度? Apr 06, 2025 pm 06:27 PM

解決 Photoshop 啟動慢的問題需要多管齊下,包括:升級硬件(內存、固態硬盤、CPU);卸載過時或不兼容的插件;定期清理系統垃圾和過多的後台程序;謹慎關閉無關緊要的程序;啟動時避免打開大量文件。

PS啟動時一直顯示正在載入如何解決? PS啟動時一直顯示正在載入如何解決? Apr 06, 2025 pm 06:36 PM

PS啟動時卡在“正在載入”可能是由於各種原因造成的:禁用損壞或衝突的插件。刪除或重命名損壞的配置文件。關閉不必要的程序或升級內存,避免內存不足。升級到固態硬盤,加快硬盤讀取速度。重裝PS修復損壞的系統文件或安裝包問題。查看錯誤日誌分析啟動過程中的錯誤信息。

PS打開文件時一直顯示正在載入如何解決? PS打開文件時一直顯示正在載入如何解決? Apr 06, 2025 pm 06:33 PM

PS打開文件時出現“正在載入”卡頓,原因可能包括:文件過大或損壞、內存不足、硬盤速度慢、顯卡驅動問題、PS版本或插件衝突。解決方法依次為:檢查文件大小和完整性、增加內存、升級硬盤、更新顯卡驅動、卸載或禁用可疑插件、重裝PS。通過逐步排查,並善用PS的性能設置,養成良好的文件管理習慣,可以有效解決該問題。

html下一頁功能 html下一頁功能 Apr 06, 2025 am 11:45 AM

<p>可以通過 HTML 創建下一頁功能,步驟包括:創建容器元素、分割內容、添加導航鏈接、隱藏其他頁面、添加腳本。該功能允許用戶瀏覽分段的內容,每次只顯示一頁,適用於展示大量數據或內容。 </p>

PS載入慢與電腦配置有關嗎? PS載入慢與電腦配置有關嗎? Apr 06, 2025 pm 06:24 PM

PS載入慢的原因在於硬件(CPU、內存、硬盤、顯卡)和軟件(系統、後台程序)的綜合影響。解決方法包括:升級硬件(尤其是更換固態硬盤),優化軟件(清理系統垃圾、更新驅動、檢查PS設置),處理PS文件。定期維護電腦也有助於提升PS運行速度。

PS執行操作時一直顯示正在載入如何解決? PS執行操作時一直顯示正在載入如何解決? Apr 06, 2025 pm 06:30 PM

PS卡在“正在載入”?解決方法包括:檢查電腦配置(內存、硬盤、處理器)、清理硬盤碎片、更新顯卡驅動、調整PS設置、重新安裝PS,以及養成良好的編程習慣。

PS導出PDF可以批量導出嗎 PS導出PDF可以批量導出嗎 Apr 06, 2025 pm 04:54 PM

PS批量導出PDF的方法有三種:利用PS動作功能:錄製打開文件和導出PDF動作,循環執行動作即可。借助第三方軟件:使用文件管理軟件或自動化工具指定輸入輸出文件夾,設置文件名格式即可。使用腳本:編寫腳本定制批量導出邏輯,但需要編程知識。

See all articles