亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python正則表達(dá)式和re庫(kù)知識(shí)點(diǎn)總結(jié)

 更新時(shí)間:2019年02月11日 11:26:24   投稿:laozhang  
在本篇文章中小編給大家分享了關(guān)于Python正則表達(dá)式和re庫(kù)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們學(xué)習(xí)下。

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

1. 正則表達(dá)式的語(yǔ)法

. 表示任何單個(gè)字符

[] 字符集,對(duì)單個(gè)字符給出取值范圍

[^] 非字符集,對(duì)單個(gè)字符給出排除范圍

*前一個(gè)字符0次或者無(wú)限次擴(kuò)展

+前一個(gè)字符1次或無(wú)限次擴(kuò)展

?前一個(gè)字符0次或1次擴(kuò)展

|左右表達(dá)式任意一個(gè)

{m}擴(kuò)展前一個(gè)字符m次

{m,n}擴(kuò)展前一個(gè)字符m至n次

^匹配字符串開頭

$匹配字符串結(jié)尾

()分組標(biāo)記,內(nèi)部只能使用|操作符

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

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

2. python中re庫(kù)的使用

Re庫(kù)是python的標(biāo)準(zhǔn)庫(kù),主要用于字符串匹配,調(diào)用方法:import re

2.1. 正則表達(dá)式字符串的類型

re庫(kù)采用raw string類型來(lái)表示正則表達(dá)式,表示為
r'text'
raw string是不包含對(duì)轉(zhuǎn)義符的再次轉(zhuǎn)義的字符串,總而言就是string會(huì)對(duì)字符轉(zhuǎn)義,而raw string不會(huì),因?yàn)樵谡齽t表達(dá)中會(huì)出現(xiàn)轉(zhuǎn)義符號(hào),所以避免繁瑣我們使用raw string

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

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

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

re.split()將一個(gè)字符串按照正則表達(dá)式匹配結(jié)果進(jìn)行分割,返回列表類型

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

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

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

pattern : 正則表達(dá)式的字符串或原生字符串表示

string : 待匹配字符串

flags : 正則表達(dá)式使用時(shí)的控制標(biāo)記

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

re.M re.MULTILINE 正則表達(dá)式中的^操作符能夠?qū)⒔o定字符串的每行當(dāng)作匹配開始

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

舉例說(shuō)明:

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

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

從一個(gè)字符串的開始位置起匹配正則表達(dá)式,返回match對(duì)象

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

舉例說(shuō)明:

import re
match = re.match(r'[1-9]\d{5}', 'BIT 100081')
print(match.group(0))
 
結(jié)果會(huì)報(bào)錯(cuò),match為空,因?yàn)閙atch函數(shù)是
從字符串開始位置開始匹配,因?yàn)閺拈_始位置沒(méi)有匹配到,所以為空

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

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

參數(shù)同search

舉例說(shuō)明:

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

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

將一個(gè)字符串按照正則表達(dá)式匹配結(jié)果進(jìn)行分割返回列表類型

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

舉例說(shuō)明 :

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

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

搜索字符串,返回一個(gè)匹配結(jié)果的迭代類型,每個(gè)迭代元素是match對(duì)象

參數(shù)同search

舉例說(shuō)明 :

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

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

在一個(gè)字符串中替換所有匹配正則表達(dá)式的子串返回替換后的字符串

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

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

舉例說(shuō)明:

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

2.3 Re庫(kù)的另一種等價(jià)用法(面向?qū)ο螅?/strong>

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

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

2.4 Re庫(kù)的Match對(duì)象

Match對(duì)象是是一次匹配的結(jié)果,包含匹配的很多信息

以下是Match對(duì)象的屬性

.string 待匹配的文本

.re 匹配時(shí)使用的patter對(duì)象(正則表達(dá)式)

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

.endpos 正則表達(dá)式搜索文本的結(jié)束位置

以下是Match對(duì)象的方法

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

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

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

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

2.5 Re庫(kù)的貪婪匹配和最小匹配

當(dāng)正則表達(dá)式可以匹配長(zhǎng)短不同的多項(xiàng)時(shí),返回哪一個(gè)呢?Re庫(kù)默認(rèn)采用貪婪匹配,即返回匹配最長(zhǎng)的子串

最小匹配

*? 前一個(gè)字符0次或無(wú)限次擴(kuò)展,最小匹配

+? 前一個(gè)字符1次或無(wú)限次擴(kuò)展,最小匹配

?? 前一個(gè)字符0次或1次擴(kuò)展,最小匹配

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

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

相關(guān)文章

  • Python封裝成可帶參數(shù)的EXE安裝包實(shí)例

    Python封裝成可帶參數(shù)的EXE安裝包實(shí)例

    今天小編就為大家分享一篇Python封裝成可帶參數(shù)的EXE安裝包實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • Python range、enumerate和zip函數(shù)用法詳解

    Python range、enumerate和zip函數(shù)用法詳解

    這篇文章主要介紹了Python range、enumerate和zip函數(shù)用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • python從入門到精通(DAY 1)

    python從入門到精通(DAY 1)

    本文是此次python從入門到精通系列文章的第一篇,給大家匯總一下常用的Python的基礎(chǔ)知識(shí),非常的簡(jiǎn)單,但是很全面,有需要的小伙伴可以參考下
    2015-12-12
  • python雙向鏈表實(shí)現(xiàn)實(shí)例代碼

    python雙向鏈表實(shí)現(xiàn)實(shí)例代碼

    python雙向鏈表和單鏈表類似,只不過(guò)是增加了一個(gè)指向前面一個(gè)元素的指針,下面的代碼實(shí)例了python雙向鏈表的方法
    2013-11-11
  • TensorFlow實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)

    TensorFlow實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)

    這篇文章主要為大家詳細(xì)介紹了TensorFlow實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Python實(shí)現(xiàn)貪心算法的示例

    Python實(shí)現(xiàn)貪心算法的示例

    這篇文章主要介紹了Python實(shí)現(xiàn)貪心算法的示例,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-04-04
  • Python字符串常規(guī)操作小結(jié)

    Python字符串常規(guī)操作小結(jié)

    本文主要介紹了Python字符串常規(guī)操作小結(jié),如拼接字符串、截取字符串、格式化字符串等,下面將對(duì)Python中常用字符串操作方法進(jìn)行介紹,感興趣的可以了解一下
    2022-04-04
  • python 編碼規(guī)范整理

    python 編碼規(guī)范整理

    這篇文章主要介紹了python 編碼規(guī)范整理,需要的朋友可以參考下
    2018-05-05
  • 使用Python?Socket實(shí)現(xiàn)搭建HTTP協(xié)議

    使用Python?Socket實(shí)現(xiàn)搭建HTTP協(xié)議

    網(wǎng)絡(luò)編程中,了解底層的通信機(jī)制是極其重要的,本文將帶領(lǐng)大家深入探索如何使用Python的socket庫(kù)來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的HTTP協(xié)議,感興趣的可以了解下
    2024-02-02
  • 深入淺析Python科學(xué)計(jì)算庫(kù)Scipy及安裝步驟

    深入淺析Python科學(xué)計(jì)算庫(kù)Scipy及安裝步驟

    這篇文章主要介紹了Python科學(xué)計(jì)算庫(kù)—Scipy的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10

最新評(píng)論