欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python正則表達式和re庫知識點總結

 更新時間:2019年02月11日 11:26:24   投稿:laozhang  
在本篇文章中小編給大家分享了關于Python正則表達式和re庫知識點內容,有興趣的朋友們學習下。

正則表達式是定義搜索模式的字符序列。通常這種模式被字符串搜索算法用于字符串上的“查找”或“查找和替換”操作,或者用于輸入驗證。

1. 正則表達式的語法

. 表示任何單個字符

[] 字符集,對單個字符給出取值范圍

[^] 非字符集,對單個字符給出排除范圍

*前一個字符0次或者無限次擴展

+前一個字符1次或無限次擴展

?前一個字符0次或1次擴展

|左右表達式任意一個

{m}擴展前一個字符m次

{m,n}擴展前一個字符m至n次

^匹配字符串開頭

$匹配字符串結尾

()分組標記,內部只能使用|操作符

d數(shù)字,等價于[0-9]

w單詞字符,等價于[A-Z,a-z,0-9]

2. python中re庫的使用

Re庫是python的標準庫,主要用于字符串匹配,調用方法:import re

2.1. 正則表達式字符串的類型

re庫采用raw string類型來表示正則表達式,表示為
r'text'
raw string是不包含對轉義符的再次轉義的字符串,總而言就是string會對字符轉義,而raw string不會,因為在正則表達中會出現(xiàn)轉義符號,所以避免繁瑣我們使用raw string

2.2. Re庫主要功能函數(shù)
re.search()在一個字符串中搜索正則表達式的第一個位置,返回match對象

re.match()從一個字符串的開始位置起匹配正則表達式,返回match對象

re.findall()搜索字符串,以列表類型返回全部能匹配的子串

re.split()將一個字符串按照正則表達式匹配結果進行分割,返回列表類型

re.finditer()搜索字符串,返回一個匹配結果的迭代類型,每個迭代元素是match對象

re.sub()在一個字符串中替換所有匹配正則表達式的子串,返回替換后的字符串

2.2.1. re.search(pattern, string, flags=0)
在一個字符串中搜索正則表達式的第一個位置,返回match對象

pattern : 正則表達式的字符串或原生字符串表示

string : 待匹配字符串

flags : 正則表達式使用時的控制標記

re.I re.IGNORECASE 忽略正則表達式的大小寫,[A‐Z]能夠匹配小寫字符

re.M re.MULTILINE 正則表達式中的^操作符能夠將給定字符串的每行當作匹配開始

re.S re.DOTALL 正則表達式中的.操作符能夠匹配所有字符,默認匹配除換行外的所有字符

舉例說明:

import re
match = re.search(r'[1-9]\d{5}', 'BIT 100081')
if match:
  print(match.group(0))
 
結果為100081

2.2.2. re.match(pattern, string, flags=0)

從一個字符串的開始位置起匹配正則表達式,返回match對象

參數(shù)同search函數(shù)

舉例說明:

import re
match = re.match(r'[1-9]\d{5}', 'BIT 100081')
print(match.group(0))
 
結果會報錯,match為空,因為match函數(shù)是
從字符串開始位置開始匹配,因為從開始位置沒有匹配到,所以為空

2.2.3. re.findall(pattern, string, flags=0)

搜索字符串,以列表類型返回全部能匹配的子串

參數(shù)同search

舉例說明:

import re
ls=re.findall(r'[1-9]\d{5}', 'BIT100081 TSU100084')
print(ls)
 
結果為['100081', '100084']

2.2.4. re.split(pattern, string, maxsplit=0, flags=0)

將一個字符串按照正則表達式匹配結果進行分割返回列表類型

maxsplit : 最大分割數(shù),剩余部分作為最后一個元素輸出

舉例說明 :

import re
re.split(r'[1-9]\d{5}', 'BIT100081 TSU100084')
結果['BIT', ' TSU', ' ']
re.split(r'[1-9]\d{5}', 'BIT100081 TSU100084', maxsplit=1)
結果['BIT', ' TSU100081']

2.2.5. re.finditer(pattern, string, maxsplit=0, flags=0)

搜索字符串,返回一個匹配結果的迭代類型,每個迭代元素是match對象

參數(shù)同search

舉例說明 :

import re
for m in re.finditer(r'[1-9]\d{5}', 'BIT100081 TSU100084'):
  if m:
    print(m.group(0))
結果為
100081
100084

2.2.6. re.sub(pattern, repl, string, count=0, flags=0)

在一個字符串中替換所有匹配正則表達式的子串返回替換后的字符串

repl : 替換匹配字符串的字符串

count : 匹配的最大替換次數(shù)

舉例說明:

import re
re.sub(r'[1-9]\d{5}', ':zipcode', 'BIT100081 TSU100084')
結果為
'BIT:zipcode TSU:zipcode'

2.3 Re庫的另一種等價用法(面向對象)

rst=re.search(r'[1-9]\d{5}', 'BIT 100081')
函數(shù)式的調用,一次性操作
pat=re.compile(r'[1-9]\d{5}')
rst=pat.search('BIT 100081')
編譯后多次操作

regex=re.complie(pattern,flags=0)
regex也有以上六種用法

2.4 Re庫的Match對象

Match對象是是一次匹配的結果,包含匹配的很多信息

以下是Match對象的屬性

.string 待匹配的文本

.re 匹配時使用的patter對象(正則表達式)

.pos 正則表達式搜索文本的開始位置

.endpos 正則表達式搜索文本的結束位置

以下是Match對象的方法

.group(0) 獲得匹配后的字符串

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

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

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

2.5 Re庫的貪婪匹配和最小匹配

當正則表達式可以匹配長短不同的多項時,返回哪一個呢?Re庫默認采用貪婪匹配,即返回匹配最長的子串

最小匹配

*? 前一個字符0次或無限次擴展,最小匹配

+? 前一個字符1次或無限次擴展,最小匹配

?? 前一個字符0次或1次擴展,最小匹配

{m,n}? 擴展前一個字符m至n次(含n),最小匹配

只要長度輸出可能不同的,都可以通過在操作符后增加?變成最小匹配

相關文章

  • 如何遠程使用服務器上的Jupyter notebook

    如何遠程使用服務器上的Jupyter notebook

    這篇文章主要介紹了如何遠程使用服務器上的Jupyter notebook,主要是在服務器端執(zhí)行操作,需要特別注意為了防止遠程中斷,使用掛起操作,即執(zhí)行nohup jupyter notebook,需要的朋友可以參考下
    2023-02-02
  • 3分鐘學會一個Python小技巧

    3分鐘學會一個Python小技巧

    Python時間日期轉換在開發(fā)中是非常高頻的一個操作,你經常會遇到需要將字符串轉換成 datetime 或者是反過來將 datetime 轉換成字符串,今天小編給大家?guī)砹艘粋€Python小技巧,感興趣的朋友一起看看吧
    2018-11-11
  • Django零基礎入門之模板變量詳解

    Django零基礎入門之模板變量詳解

    這篇文章主要介紹了Django零基礎入門之模板變量詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • 關于pandas-profiling的降級之旅

    關于pandas-profiling的降級之旅

    這篇文章主要介紹了關于pandas-profiling的降級之旅,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • python 實現(xiàn)壓縮和解壓縮的示例

    python 實現(xiàn)壓縮和解壓縮的示例

    這篇文章主要介紹了python 實現(xiàn)壓縮和解壓縮的示例,幫助大家更好的利用python處理文件,感興趣的朋友可以了解下
    2020-09-09
  • 深入淺析Django MTV模式

    深入淺析Django MTV模式

    Django是基于MTV模式的框架,需要配合url控制器(路徑分發(fā))使用,本文重點給大家介紹Django MTV模式詳解,需要的朋友參考下吧
    2021-09-09
  • python Django編寫接口并用Jmeter測試的方法

    python Django編寫接口并用Jmeter測試的方法

    這篇文章主要介紹了python Django編寫接口并用Jmeter測試,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • Python Selenium XPath根據(jù)文本內容查找元素的方法

    Python Selenium XPath根據(jù)文本內容查找元素的方法

    這篇文章主要介紹了Python Selenium XPath根據(jù)文本內容查找元素的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • 一文教會你用Python實現(xiàn)pdf轉word

    一文教會你用Python實現(xiàn)pdf轉word

    python實現(xiàn)pdf轉word,支持中英文轉換,轉換精度高,可以達到使用效果,下面這篇文章主要給大家介紹了關于用Python實現(xiàn)pdf轉word的相關資料,需要的朋友可以參考下
    2023-01-01
  • 詳解Python如何在多層循環(huán)中使用break/continue

    詳解Python如何在多層循環(huán)中使用break/continue

    關于break/continue這兩個關鍵字在平常的使用過程中一直比較迷糊。所以本文將詳細講講Python如何在多層循環(huán)中使用break/continue,需要的可以參考一下
    2022-05-05

最新評論