python正則表達式使用方法說明

2020-12-03 曾光紅

曾光紅/文 (同步發布豆瓜網)

一、導入re庫

python使用正則表達式要導入re庫。

import re

在re庫中。正則表達式通常被用來檢索查找、替換那些符合某個模式(規則)的文本。

二、使用正則表達式步驟

1、尋找規律;

2、使用正則符號表示規律;

3、提取信息,如果每一個字符都能匹配,則匹配成功;一旦有匹配不成功的字符則匹配失敗。

三、正則表達式中常見的基本符號

1.點號「.」

一個點號可以代替除了換行符(\n)以外的任何一個字符,包括但不限於英文字母、數字、漢字、英文標點符號和中文標點符號。

2.星號「*」

一個星號可以表示它前面的一個子表達式(普通字符、另一個或幾個正則表達式符號)0次到無限次。

3.問號「?」

問號表示它前面的子表達式0次或者1次。注意,這裡的問號是英文問號。

4.反斜槓「\」

反斜槓在正則表達式裡面不能單獨使用,甚至在整個Python裡都不能單獨使用。反斜槓需要和其他的字符配合使用來把特殊符號變成普通符號,把普通符號變成特殊符號。如:「\n」。

5.數字「\d」

正則表達式裡面使用「\d」來表示一位數字。再次強調一下,「\d」雖然是由反斜槓和字母d構成的,但是要把「\d」看成一個正則表達式符號整體。

6.小括號「()」

小括號可以把括號裡面的內容提取出來。

四、常見的正則表達式舉例

1. .*?(匹配所有內容)

例如:'<title>(.*?)</title>' 將網頁的標題爬取下來。

2、\w 單詞字符[A-Za-z0-9_], "+" 匹配前一個字符1次或無限次 例如:一個人的郵箱是這樣的lixiaomei@qq.com,那麼我們如何從一大堆的字符串把它提取出來呢?

[size=1em]

思考:若郵箱為hello123@heuet.edu.com,如何匹配?

[size=1em]

?代表了匹配0次或者1次括號分組內的匹配內容,"()"則表示被括內容是一個分組,分組序號從pattern字符串起始往後依次排列。因為是匹配0次或1次,那麼就意味著括號內的部分是可有可無的,所以這個pattern就可能匹配以上兩種郵箱格式。

擴展: \w+@(\w+\.)*\w+\.com 模式就更厲害了," * " 可以匹配0次或無限次。

五、re庫的核心函數

1、compile()函數 (可有可無)

函數定義: compile(pattern, flag=0)函數描述:編譯正則表達式pattern,然後返回一個正則表達式對象。為什麼要對pattern進行編譯呢?《Python核心編程》裡面是這樣解釋的:

使用預編譯的代碼對象比直接使用字符串要快,因為解釋器在執行字符串形式的代碼前都必須把字符串編譯成代碼對象。

2、match()函數

函數定義: match(pattern, string, flag=0)函數描述:只從字符串的最開始與pattern進行匹配,匹配成功返回匹配對象(只有一個結果),否則返回None。

問題來了,為什麼result1結果有這麼多的東西啊?貌似最後一個才是要匹配的對象。這個要怎麼提取出來呀?

別著急,我們現在得到的是匹配對象,需要用一定的方法提取,後面會在《匹配對象的方法》章節來解決這個問題,繼續往下看。

3、search()函數

函數定義: search(pattern, string, flag=0)函數描述:與match()工作的方式一樣,但是search()不是從最開始匹配的,而是從任意位置查找第一次匹配的內容。如果所有的字串都沒有匹配成功,返回None,否則返回匹配對象。

4、findall()函數

函數定義: findall(pattern, string [,flags])函數描述:查找字符串中所有出現的正則表達式模式,並返回一個匹配列表

上面同時列出了match、search、findall三個函數用法。findall與match和search不同的地方是它會返回一個所有無重複匹配的列表。如果沒找到匹配部分,就返回一個空列表。六、匹配對象的方法(提取)

以上re模塊函數的返回內容可以分為兩種:

返回匹配對象:就是上面如 <_sre.SRE_Match object; span=(0, 5), match='12345'>這樣的對象,可返回匹配對象的函數有match、search、finditer。返回一個匹配的列表:返回列表的就是 findall。因此匹配對象的方法只適用match、search、finditer,而不適用與findall。

常用的匹配對象方法有這兩個:group、groups、還有幾個關於位置的如 start、end、span就在代碼裡描述了。

1、group方法

方法定義:group(num=0)方法描述:返回整個的匹配對象,或者特殊編號的字組

再看下面的實例:

這裡就需要用到我們之前提到的分組概念。

分組的意義在於:我們不僅僅想得到匹配的整個字符串,我們還想得到整個字符串裡面的特定子字符串。如上例中,整個字符串是「我12345+abcde」,但是想得到 「abcde」,我們就可以用()括起來。因此,你可以對pattern進行任何的分組,提取你想得到的內容。

2、groups方法

方法定義:groups(default =None)方法描述:返回一個含有所有匹配子組的元組,匹配失敗則返回空元組

七、re模塊的屬性(flag)

re模塊的常用屬性有以下幾個:

re.I: 匹配不分大小寫;(常用)re.L: 根據使用的本地語言環境通過\w, \W, \b, \B, \s, \S實現匹配;re.M: ^和$分別匹配目標字符串中行的起始和結尾,而不是嚴格匹配整個字符串本身的起始和結尾;re.S: 「.」(點號)通常匹配除了\n(換行符)之外的所有單個字符,該標記表示「.」(點號)能夠匹配全部字符;(常用)re.X: 通過反斜線轉義,否則所有空格加上#(以及在該行中所有後續文字)都被忽略,除非在一個字符類中或者允許注釋並且提高可讀性;

注意:

如果我們定義了compile編譯,需要先將flag填到compile函數中,否則填到匹配函數中會報錯; 如果沒有定義compile,則可以直接在匹配函數findall中填寫flag。

附錄:

正則表達式中語法一覽表

同步發布 豆瓜網 https://www.dougua.net/a/9974.html

相關焦點

  • Python「正則表達式」詳解(上)
    大家好,今天我們一起學習以下Python中的「正則表達式」,說到正則表達式,大家可能比較陌生,不過我卻要告訴你,你每天都在使用正則表達式,不要不承認,就問你最常見的,瀏覽器每天用不?淘寶經常逛不?你在搜索框裡輸入幾個文字,按下回車,就出來大量結果,你想想這是怎麼辦到的,是正則表達式,可以好不誇張的講,沒有正則表達式,就沒有搜尋引擎。
  • Python:正則表達式基本符號總結
    字符串是我們在編程的時候很常用的一種數據類型,檢查會在字符串裡面查找一些內容,對於比較簡單的查找,字符串裡面就有一些內置的方法可以處理,對於比較複雜的字符串查找,或者是有一些內容經常變化的字符串裡面查找,那麼字符串內置的查找方法已經不好使了,滿足不了我們的要求,這個時候就得用正則表達式了,正則表達式就是用來匹配一些比較複雜的字符串。
  • 代碼詳解:Python正則表達式的終極使用指南
    雖然想要實現上述功能聽起來很繁瑣,但是如果使用Python正則表達式模塊,就可以使這一操作更加簡單。假設要在一篇特定的文章中找出標點符號的數量。以狄更斯的作品文本為例。你通常會怎麼做?但如果有re模塊,則只需兩行代碼:import repattern = r"[;.,–]"print(len(re.findall(pattern,string)))-19本文討論的是最常用的正則表達式模式,以及一些經常使用的正則表達式函數。什麼是正則表達式?
  • 學習Python正則表達式
    Python中的正則表達式(re)就可以解決這個問題!正則表達式正則表達式是一個具有特殊字符的序列。它有助於檢查字符串中的每個字符,看它是否與某個模式匹配:哪些字符在什麼位置出現了多少次。result = re.findall(r』\d』, text)這將返回所有數字,但每個元素只有一個數字:['1', '0', '0', '1', '1', '1', '1', '2', '3', '4', '5', '6', '7']r-python原始字符串這裡,r表示python原始字符串。
  • Python正則表達式:特殊符號和字符
    正表達式為高級的文本模式匹配,抽取,與/或文本形式的搜索和替換功能提供了基礎。簡而言之,正則表達式(簡稱regex)是由一些字符和特殊符號組成的字符串,它描述了模式的重複或者表達多個字符。python通過標準庫中的re模塊來支持正則表達式。
  • Python程式語言:如何運用正則表達式
    這篇文章,小編要和大家分享的知識是Python語言的正則表達式,以及自己學到的使用方法!學會正則表達式可以幫助我們抓取網絡信息,正則表達式又叫Re庫!這裡我們要了解什麼是正則表達式,正則表達式是用來簡潔表達一組字符串的表達式!
  • Python正則表達式由淺入深(二)
    在前兩篇連載文章中,我們學習了re模塊的match()、search()、findall()方法,以及學習了使用正則表達式中常用的元字符、限定符、選擇字符、中括號來搭配這些方法來靈活處理常見的數據匹配問題。這本篇文章分鐘,我們將會進一步學習正則表達式中其他符合,包括令初學者非常頭疼的分組問題。
  • Python中使用re模塊實現正則表達式的匹配字符串操作
    第八十二節:匹配字符串經過上一節比較枯燥的基礎內容,今天來看看如何利用正則表達式在Python中進行具體操作。在Python中使用正則表達式,首先要導入一個re模塊。re就是Regular Expression(正則表達式)的縮寫,所以導入re模塊就是導入「正則表達式模塊」。
  • 使用JavaScript對正則表達式進行解析
    它們具有自己的語法,就像它們是自己的程式語言一樣,並且存在於大多數(如果不是全部)程式語言中的正則表達式進行交互的方法和方式。正則表達式的常見示例,例如給定的字符串是電子郵件地址還是電話號碼,或者可用於驗證密碼是否滿足一定的複雜性。可以使用正則表達式做什麼?
  • Python 正則表達式-函數用法分析
    Python正則表達式的主要作用是檢索、替換符合匹配規則的文本,什麼時候檢索,什麼時候替換,我們根據需求,選擇最合適的函數。【函數一】compile(pattern, flags=0)我們編寫的正則表達式 pattern,指定使用的模式 flags 默認為0 即不使用任何模式【函數二】 purge()這個函數的作用是清除緩存中的正則表達式【函數三】escape(pattern)如果需要操作的文本中含有正則的元字符時,需要將元字符加上反斜扛
  • 在JavaScript字符串的search()方法中,如何匹配正則表達式?
    第三節:正則表達式語法在JavaScript中,對於正則表達式的定義,使用字面量表示法的基本語法如下:/模式/修飾符基本語法說明如下:使用兩個/來表示一個正則表達式匹配模式。第一個/後面跟匹配模式。例如:var patt = /Yido/i,Yido是一個簡單的匹配模式,用於字符串的搜索。第二個/後面跟修飾符標誌。
  • PHP正則表達式的快速學習方法
    此外,象JavaScript這種客戶端的腳本語言也提供了對正則表達式的支持。由此可見,正則表達式已經超出了某種語言或某個系統的局限,成為人們廣為接受的概念和功能。正則表達式可以讓用戶通過使用一系列的特殊字符構建匹配模式,然後把匹配模式與數據文件、程序輸入以及WEB頁面的表單輸入等目標對象進行比較,根據比較對象中是否包含匹配模式,執行相應的程序。
  • 正則表達式A - 方法及特殊字符用法
    課程大綱 1.正則表達式的概念及作用 2.正則表達式的創建方法 3.正則表達式的用法 正則表達式概念: 正則表達式是由普通字符及特殊字符組成的對字符串進行過濾的邏輯公式 正則表達式的創建方式: 1.字面量方式創建 (隱式創建): var reg = /正則表達式/gi;
  • Python正則表達式由淺入深(一)
    雖然Python處理字符串的方法很多,而且流行的pandas庫也提供了大量的向量化字符串方法,但是一旦涉及要經過較為複雜的數據匹配才能進行的字符操作,這些方法就顯得非常的乏力。尤其是由於文本數據來源於爬蟲等渠道,數據往往嚴重不規整,這時候文本處理起來就顯得尤為吃力。幸運的是Python提供了re模塊,可以實現正則表達式的操作。
  • 正則表達式在VBA中間是如何應用?正則表達式的實現方式?
    在繼續學習正則元字符特性或編制自己的正則表達式時,常常需要對其測試.也可以自己編制VBA代碼進行測試,這樣做的好處是可以提高在今後實際工作應用正則表達式的能力。所以,先介紹正則與VBA的交互的相關知識,讓你在VBA中間使用正則表達式遊刃有餘。當然你也可以快速閱讀或直接越過本章內容,在你以後的實際具體工作應用時,直接查閱即可。
  • Python(2):正則表達式的常見符號與作用,每個都有示例
    o指數號(^)-匹配以指定字符開頭的字符串示例:^start—匹配以start開頭的字符串美元符($)-匹配以指定字符結尾的字符串示例:/aa/bb$—匹配以"/aa/bb"為結尾的字符串匹配元字符須使用轉義符(\)如果想要匹配的字符是正則表達式中的特殊字符,那麼就需要加上轉義符(\),示例:匹配$結尾的字符串
  • 正則表達式的基礎知識和Python中的基本應用
    第八十一節:正則表達式正則表達式又叫「規則表達式」(Regular Expression),簡稱RE,是對字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個「規則字符串」,這個「規則字符串」用來表達對字符串的一種過濾邏輯。
  • 【第160期】指尖上的正則表達式–入門篇
    Perl的正則表達式源自於Henry Spencer編寫的regex,之後已演化成了pcre(Perl兼容正則表達式Perl Compatible Regular Expressions),pcre是一個由Philip Hazel開發的、為很多現代工具所使用的庫。正則表達式的第一個實用應用程式即為Unix中的 qed 編輯器。
  • 給JAVA程式設計師的正則表達式一課
    正則基礎正則表達式(Regex,簡稱RE)是一種根據字符串集中的每個字符串的共同特徵來描述字符串集的方法。可用於搜索,編輯或處理文本和數據。簡單來說,正則表達式是幫助我們根據特定格式驗證或匹配字符串的方式。可以類比資料庫的SQL語言,sql是搜索數據,RE是搜索字符串。正則表達式和SQL語言是開發界的兩個偉大發明。
  • MySQL如何使用正則表達式?(代碼示例)
    MySQL支持基於正則表達式和regexp運算符的另一種模式的匹配操作。下面本篇文章就帶大家認識一下MySQL的正則表達式(Regexp),通過示例來簡單介紹在MySQL中如何使用正則表達式(Regexp),希望對大家有所幫助。