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

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

#程式語言#

我是「學海無涯自學不惜!」,關注我,一同學習簡單易懂的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模塊實現正則表達式的替換字符串操作
    第八十三節:替換字符串Python中,導入re模塊後還可以進行字符串的替換操作,就是sub()方法,具體的語法格式如下:re.sub(pattern,repl,str,count,flags)>和昨天學過的三種匹配字符串的方法一樣,模塊名re使用一個點「.」和方法名sub連接;方法名sub後的小括號可以設置五個參數,前三個必備,後兩個可選,中間使用逗號「,」分隔;第一個參數是老熟人pattern,代表正則表達式轉換的模式字符串;
  • Python中使用re模塊實現正則表達式的分割字符串操作
    第八十四節:正則表達式實現分割字符串操作分割字符串的方法在前面就學習過,用正則表達式實現分割字符串,使用的依然是split()方法,分割後也是返回一個列表,不同點在哪裡呢?>str.split(sep,maxsplit)再來看使用正則表達式
  • python正則表達式使用方法說明
    曾光紅/文 (同步發布豆瓜網)一、導入re庫python使用正則表達式要導入re庫。import re在re庫中。正則表達式通常被用來檢索查找、替換那些符合某個模式(規則)的文本。二、使用正則表達式步驟1、尋找規律;2、使用正則符號表示規律;3、提取信息,如果每一個字符都能匹配,則匹配成功;一旦有匹配不成功的字符則匹配失敗。
  • Python正則表達式:特殊符號和字符
    正表達式為高級的文本模式匹配,抽取,與/或文本形式的搜索和替換功能提供了基礎。簡而言之,正則表達式(簡稱regex)是由一些字符和特殊符號組成的字符串,它描述了模式的重複或者表達多個字符。python通過標準庫中的re模塊來支持正則表達式。
  • Python正則表達式由淺入深(三)
    經過前面三篇連載文章,相信大家對Python的re模塊使用正則表達式來匹配字符串已經有所了解。到目前為止,基本上有難度入門知識點都已經學完,我們繼續補充還沒講到的知識點,包括:行定位符與轉義字符,以及re模塊的re.sub()方法和re.split()方法。
  • Python正則表達式由淺入深(一)
    幸運的是Python提供了re模塊,可以實現正則表達式的操作。re模塊主要通過六大方法來對字符串進行處理,包括:match()、search()、findall()、split()、sub()。這些方法涉及到字符串的匹配與替換等操作,在接下來的4篇連載文章裡,我們不單只會講解這4種方法,還會把元字符、行定位符、限定符、字符類、排除字符、選擇字符、轉義字符、分組等正則表達式最常用知識點貫穿起來。
  • Python學習第137課——正則表達式中實現可選規則
    【每天幾分鐘,從零入門python編程的世界!】正則表達式英文是Regular Expression,各種程式語言中都是把它簡寫成Regex,或者Regexp或者re。這節我們學習如何在正則表達式中實現可選規則。
  • Python正則表達式由淺入深(二)
    在前兩篇連載文章中,我們學習了re模塊的match()、search()、findall()方法,以及學習了使用正則表達式中常用的元字符、限定符、選擇字符、中括號來搭配這些方法來靈活處理常見的數據匹配問題。這本篇文章分鐘,我們將會進一步學習正則表達式中其他符合,包括令初學者非常頭疼的分組問題。
  • 正則表達式斷言精講Java語法實現
    在使用上面的代碼過程中存在一些問題,我獲得的單詞默認是前頭帶空格的,縱然我可以通過String類的trim來解決這些問題,可是這樣用起來會很麻煩,有沒有一種正則表達式的規則可以檢測那些開頭帶空格的詞彙但是適配到的詞彙不帶空格呢?
  • JavaScript-正則表達式中的修飾符和對象有哪些?
    >(1)/frank/i是一個正則表達式(2)frank是這個正則表達式的主體,表示想要檢索的內容是frank(3)i 是一個正則表達式的修飾符,表示檢索內容時不區分大小寫1.3 正則表達式常見用法正則表達式在實際開發中一般不會單獨使用
  • java正則表達式入坑指南
    在日常開發工作中,無論你使用的語言是java、python、shell、golang還是C#, 正則表達式是程式語言中幾乎繞不開的話題。有了它,可以幫你快速定位到符合條件的文本內容。今天小編帶大家一起來學習下正則表達式,相信通過這篇文章的介紹,能為以後的工作提供一個更清晰的思路。
  • 學習爬蟲的第49天,正則表達式被我踩在腳下
    正則表達式 描述了一種字符串匹配的模式,可以用來檢查一個字符串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。網上一搜,常用的正則表達式有60多個,關鍵是一個個都寫的跟天書一樣。好在老師說作為初學者,不要求全會,自己能寫一兩個即可,關鍵是能看懂別人寫的。
  • Python用tkinter製作一個簡單的re測試工具
    模塊中幾個常量這裡對於re模塊的其它知識我們不做贅述,重點來了解一下我們程序中涉及的幾個re模塊的常量。使用這些常量可以有效地對re正則表達式進行限制或功能擴展,使其匹配功能更加豐富。這裡的常量在re模塊中編譯時使用,比如pattern=re.compile(reg, flag)reg:正則表達式flag:用於控制正則的一些行為,取值可以使用按位或運算符'|'表示同時生效,如re.I | re.M
  • 翻譯:《實用的Python編程》01_04_Strings
    例如:文件名、正則表達式等。f-Strings具有格式化表達式替換的字符串。練習在這些習題中,你將嘗試對 Python 字符串類型進行操作。你應該在 Python 交互提示符下操作,在該提示符下可以輕鬆地查看到結果。
  • python清除字符串中間空格的方法
    python清除字符串中間空格的方法 1、使用字符串函數replace
  • Python 四大數據類型總結
    用於單詞的首字符大寫:In [4]: 'i love python'.title()Out[4]: 'I Love Python'find 用於返回匹配字符串的起始位置索引:In [5]: 'i love python'.find('python')Out
  • 做一個基於python的樹莓派MCU性能-溫度監控儀錶盤
    2、正則表達式正則表達式(Regular Expression)可以用於通過匹配字符串的方式來提取文本中符合規則的某個欄位,在本文中用到的匹配規則有:\d匹配數字例如:re.search我們使用命令top -n1 |grep %Cpu\(s\)得到MCU利用率這一整行的數據後再通過正則表達式處理數據。
  • 慢步學習二級python,字符串類型的操作:操作符,函數和方法
    繼續學習二級python考試的大綱內容:4.字符串類型的操作:字符串操作符,處理函數和處理方法字符串和數值是python語言的基礎數據類型。學習字符串類型數據的操作是學習python的基礎。字符串操作符字符串常見操作符有2個+ *在應用中的意義是 連接 和 重複如上圖,第一個指令,「愛」+「你」,
  • Python實戰 | 只需 「4步」 入門網絡爬蟲
    上面的網頁原始碼,在python語言中,我們只需要使用urllib、requests等庫實現即可,具體如下。這裡特別說明一些,requests比urllib更加方便、快捷。一旦學會requests庫,肯定會愛不釋手。
  • PHP正則表達式及表單註冊案例
    正則表達式是一種具有特定模式的用來匹配文本的字符串