Python中使用re模塊實現正則表達式的匹配字符串操作

2020-12-04 學海無涯自學不息

#程式語言#

我是「學海無涯自學不惜!」,關注我,一同學習簡單易懂的Python編程。

第八十二節:匹配字符串

經過上一節比較枯燥的基礎內容,今天來看看如何利用正則表達式在Python中進行具體操作。

在Python中使用正則表達式,首先要導入一個re模塊。re就是Regular Expression(正則表達式)的縮寫,所以導入re模塊就是導入「正則表達式模塊」。

導入re模塊的代碼比較簡單,它是這樣的:

Import re

今天的學習內容就是使用正則表達式匹配字符串。

匹配字符串的實際意義就是查找、查詢字符串。在Python中,使用正則表達式匹配字符串,多數情況下,匹配成功後立即返回Match對象,不成功就返回None值。

None值就是假值,這個不用多述。

Match對象是什麼呢?就是用一對首位標籤「<>」,包含了一次匹配的結果,其中包含了很多的信息,包括有:待匹配的字符串文本、使用的正則表達式、搜索起始位置、搜索結束位置等等。

Match對象可以通過以下幾種方法來實現:

「.group()獲得匹配的字符串內容」

「.start()匹配字符串在原始字符串的開始位置」

「.end()匹配字符串在原始字符串的結束位置」

「.span()返回(.start(), .end())」

現在來正式介紹Python中使用正則表達式匹配字符串匹配字符串的具體操作方法:

1、match()方法

這個方法的用途是匹配字符串開頭的字符,它從字符串的起始處開始匹配,匹配成功後立即返回Match對象,不匹配則返回None值,它的語法格式如下:

re.match(pattern,string,[flags])

方法名關鍵字match前一定要加上re模塊名稱,並使用「.」連接;

小括號內有三個參數使用逗號「,」分隔;

第一個參數就是正則表達式pattern(模板),屬於必填參數;

第二個參數是要匹配的字符串string,也屬於必填參數;

第三個參數是標誌位,用來控制匹配的方式,屬於可選參數,並且Python中的常用標誌如下圖所示:

Python中的常用標誌

來看一個例子:匹配字符串是否已以「i_」開頭,詳見下圖:

match()方法匹配字符串

可以看到,第一次匹配的時候沒有區分字母大小寫,匹配成功了返回為Match對象,並使用Match對象三種操作方法得到了起始位置、結束位置和匹配數據。

第二次匹配去掉了第三個可選的參數,結果返回了None值,後面對Match對象的操作方法就無效了,出現了異常。

2、search()方法

這個方法是在整個字符串中找到第一個匹配字符,匹配成功返回Match對象,不匹配則返回None值,它的語法格式如下:

re.search(pattern,string,[flags])

由於它的語法參數和match()方法是一樣的,所以就直接在上面的例子中的字符串中開頭加一點東西,再作為例子來實驗一下,詳見下圖:

search()方法匹配字符串

可以看到,它的匹配字符雖然不在字符串的開頭,但是第一次匹配時也搜索出來了,第二次則是因為沒有設定不區分大小寫,所以沒有與大寫的字母匹配,返回了None值。

3、findall()方法

這種方法的功能就比前兩種要強大一些,它是匹配字符串中所有的合乎規則的字符,並將所有的匹配結果返回成為一個列表,匹配成功就返回一個有內容的列表,不成功則返回一個空列表。語法格式如下所示:

re.findall(pattern,string,[flags])

格式很雷同,參數用法也和前兩種方法一樣,直接上例子,詳見下圖:

findall()方法匹配字符串

可以看到,findall()方法的執行結果和前兩種方法是完全不同的。

接下來用兩個小場景模擬實例,來看看正則表達式匹配字符串在生活中可以有什麼應用。

第一個場景是模擬查詢手機號碼是否屬於中國電信,來看下圖代碼:

模擬查詢電信手機號碼

第二個場景是搜索輸入內容中有沒有自己感興趣的語句,最終我選擇了搜索關於「錢」的內容,請看下圖:

模擬搜索指定字符

今天的內容就是這些了,感謝大家一直以來的支持,明天開始奉上的是「使用re模塊實現正則表達式的替換字符串操作」的內容,敬請拭目以待。

為自己加油,我是「學海無涯自學不惜!」

相關焦點

  • Python中使用re模塊實現正則表達式的分割字符串操作
    第八十四節:正則表達式實現分割字符串操作分割字符串的方法在前面就學習過,用正則表達式實現分割字符串,使用的依然是split()方法,分割後也是返回一個列表,不同點在哪裡呢?>str.split(sep,maxsplit)再來看使用正則表達式
  • python之:正則表達式-re模塊
    ----模糊匹配說明:正則表達式-所有操作對象只是字符串,多個返回list。作用:匹配字符串的,更強大的匹配功能。本身是一門小型高度專業的程式語言,內嵌在python中,並通過re模塊實現,用C編寫的引擎執行方法:re.match(pattern, string) 從字符串的起始位置匹配,返回一個匹配子串。
  • Python中的正則表達式及其常用匹配函數用法簡介
    Python正則表達式初識(九)10. Python正則表達式初識(十)附正則表達式總結11. Python正則表達式的簡單應用和示例演示這次給大家主要是介紹Python中的正則表達式,及其相關函數的基本使用方法,並且捎帶一些正則表達式給我們帶來的便利。
  • Python爬蟲提取神器,正則表達式(re模塊),全程乾貨
    正則表達式(re模塊)什麼是正則表達式正則表達式(Regular Expression)是一種文本模式,包括普通字符(例如,a到z之間的字母)和特殊字符(稱為&34;)。正則表達式使用單個字符串來描述、匹配一系列匹配某個句法規則的字符串。
  • 「正則表達式」 python中的使用
    正則表達式的介紹在實際開發過程中經常會有查找符合某些複雜規則的字符串的需要,比如:郵箱、圖片地址、手機號碼等,這時候想匹配或者查找符合某些規則的字符串就可以使用正則表達式了。2.正則表達式概念正則表達式就是記錄文本規則的代碼3. 正則表達式的樣子0\d{2}-\d{8} 這個就是一個正則表達式,表達的意思是匹配的是座機號碼4.
  • Python(3):正則表達式的編程實戰—re.match/re.search
    本文將通過通俗易懂的Python正則表達式實戰編程來為讀者演示如何使用正則表達式以及正則表達式處理的過程和結果,以供大家參考和學習。以上述知識為前提,re.compile()便是該過程的具體實現。正則表達式在模式匹配前必須被編譯成正則表達式對象,雖然使用者多不會做這步操作但大家必須要知道這一點而且強烈建議大家在正則表達式編程中使用預編譯——re.compile(),一則利於嚴謹的編程風格,二則利於提升執行性能。
  • 三十一、深入Python中的正則表達式
    正則表達式正則表達式是一個特殊的字符序列,由普通字符和元字符組成。元字符能幫助你方便的檢查一個字符串是否與某種模式匹配。Python中則提供了強大的正則表達式處理模塊,即 re 模塊, 為Python的內置模塊。下面,我帶大家來一個入門demo例子,代碼如下:import rereg_string = "hello9527python@wangcai.@!
  • 第二篇詳細Python正則表達式操作指南(re使用)
    你將使用這些模塊級函數,還是先得到一個 `RegexObject` 再調用它的方法呢?如何選擇依賴於怎樣用 RE 更有效率以及你個人編碼風格。如果一個 RE 在代碼中只做用一次的話,那麼模塊級函數也許更方便。如果程序包含很多的正則表達式,或在多處復用同一個的話,那麼將全部定義放在一起,在一段代碼中提前編譯所有的 REs 更有用。
  • python正則表達式使用方法說明
    曾光紅/文 (同步發布豆瓜網)一、導入re庫python使用正則表達式要導入re庫。import re在re庫中。正則表達式通常被用來檢索查找、替換那些符合某個模式(規則)的文本。二、使用正則表達式步驟1、尋找規律;2、使用正則符號表示規律;3、提取信息,如果每一個字符都能匹配,則匹配成功;一旦有匹配不成功的字符則匹配失敗。
  • 正則表達式讓你欲哭無淚的火星文,python中居然有這麼難學的模塊
    軟體開發中難免會使用到正則表達式,同時這也是最難掌控的一門火星文語言,為什麼這麼說了,語言這個表達式之一堆字母,數字和符號展示出來的,但是卻強大到能匹配很多規則的文本,可能應用範圍最廣的就是文本提取,和爬蟲處理。接下來我就介紹一下這們語言有多麼的令人難以捉摸。
  • 程式設計師入門基礎:python正則表達式貪婪匹配和非貪婪匹配
    此文為python正則表達式的高階入門,正則基礎入門請參考程式設計師入門基礎:python的正則表達式。一、貪婪匹配和非貪婪匹配舉例說明概念:print('非貪婪匹配',re.search('el+?'從代碼中可以看出:貪婪模式:正則表達式一般趨向於最大字符長度的匹配,也就是所謂的貪婪匹配。
  • 一篇文章搞定Python正則表達式
    獲取正則表達式來提取字符串中符合要求的文本3. 替換查找字符串中符合正則表達式的文本,並用相應的字符串替換4. 分割使用正則表達式對字符串進行分割。2.2 Python中re模塊使用正則表達式的兩種方法1. 使用re.compile(r, f)方法生成正則表達式對象,然後調用正則表達式對象的相應方法。這種做法的好處是生成正則對象之後可以多次使用。
  • 原創通俗易懂的Python的正則表達式,建議收藏
    正則表達式正則表達式是一個特殊的字符序列,由普通字符和元字符組成。元字符能幫助你方便的檢查一個字符串是否與某種模式匹配。正則表達式應用的場景也非常多。常見的比如:搜尋引擎的搜索、爬蟲結果的匹配、文本數據的提取等等都會用到,所以掌握甚至精通正則表達式是一個硬性技能,非常必要。
  • Python「正則表達式」詳解(上)
    百度百科中給了這樣一個解釋,「正則表達式,又稱規則表達式(英語:Regular Expression,在代碼中常簡寫為regex、regexp或re),是計算機科學的一個概念。正則表達式通常被用來檢索、替換那些符合某個模式(規則)的文本」,那使用正則表達式的目的是什麼呢?百度百科中只寫了兩句話:1. 給定的字符串是否符合正則表達式的過濾邏輯(稱作「匹配」);2.
  • 為什麼要學正則表達式 - 6
    在處理正字符串的時候,經常會有一些複雜規則的字符串需求,正則表表達式就是描述這些規則的公工具正則表達式就是記錄文本規則的代碼。上期咱們一起學習了正則表達式re模塊提供的match()方法學習了match()方法對字符串的操作和標識符的區別。最後通過一個案例明白了match()方法在python中的實際應用。
  • 代碼詳解:Python正則表達式的終極使用指南
    人們可能想要在文本中找出特定格式的內容,比如找出存在於文本中的電子郵件,或者大型文本中的電話號碼。雖然想要實現上述功能聽起來很繁瑣,但是如果使用Python正則表達式模塊,就可以使這一操作更加簡單。假設要在一篇特定的文章中找出標點符號的數量。以狄更斯的作品文本為例。你通常會怎麼做?
  • Python正則表達式:特殊符號和字符
    正表達式為高級的文本模式匹配,抽取,與/或文本形式的搜索和替換功能提供了基礎。簡而言之,正則表達式(簡稱regex)是由一些字符和特殊符號組成的字符串,它描述了模式的重複或者表達多個字符。python通過標準庫中的re模塊來支持正則表達式。
  • Python:正則表達式基本符號總結
    說明:如果需要匹配的字符是正則表達式中的特殊字符,那麼可以使用\進行轉義處理,例如想匹配小數點可以寫成\.就可以了,因為直接寫.會匹配任意字符;同理,想匹配圓括號必須寫成和。在python中,如果使用正則表達式的話,需要導入re模塊,re模塊是一個內置模塊,直接import就可以使用,下面是re模塊中的核心函數。
  • 大數據挖掘—(九):爬蟲利器 _正則表達式
    該對象擁有一系列方法用於正則表達式匹配和替換。  re 模塊也提供了與這些方法功能完全一致的函數,這些函數使用一個模式字符串作為它們的第一個參數。re.match函數  re.match 嘗試從字符串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match()就返回none。
  • Python正則表達式,從入門到實戰,精華都在這裡
    正則表達式的相關知識Python的中 re 模塊,主要是用來處理正則表達式一個利用 re 模塊通過正則表達式來進行網頁數據的爬取和存儲模塊2.1 re 模塊簡介在 Python 中主要是利用 re 模塊進行正則表達式的處理,涉及到 4 個常用的方法: