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

關(guān)于Python正則表達(dá)式模塊之re模塊

 更新時(shí)間:2023年04月17日 10:19:15   作者:灰勒塔德  
這篇文章主要介紹了關(guān)于Python正則表達(dá)式模塊之re模塊,?re模塊是Python中的重要組成部分,這里涉及到字符串的匹配,轉(zhuǎn)換,自定義格式化等,需要的朋友可以參考下

前言:

re模塊(正則表達(dá))是Python中的重要組成部分,這里涉及到字符串的匹配,轉(zhuǎn)換,自定義格式化……等等,尤其是對(duì)于后面要學(xué)的Python爬蟲是經(jīng)常用到的。這個(gè)模塊是Python自帶的,不需要pip下載,導(dǎo)入使用就行了。

之前我們學(xué)過了r原始字符串標(biāo)識(shí)符,比如:r'123\n' 輸出結(jié)果就是123\n,是表示輸出原始字符串,里面的轉(zhuǎn)義符就當(dāng)做普通的一個(gè)字符直接輸出就行了,這個(gè)也是一種正則表達(dá)方式。

 print(r'hello\n123\t')
#輸出結(jié)果:hello\n123\t

導(dǎo)入模塊

import re

1.re.match() 函數(shù)

語法格式:re.match(pat,string,flag=0)

用法:re.match('正則表達(dá)式’,'要匹配的字符串',flag= )

參數(shù)說明

pat:是表示參與匹配的正則表達(dá)式

string:是表示要匹配的字符串

flag:是標(biāo)志符,用于控制正則表達(dá)式的匹配方式(設(shè)置條件之類的)

函數(shù)說明:

這個(gè)函數(shù)是從開頭第一個(gè)字符開始匹配的,如果匹配成功的話就返回一個(gè)匹配對(duì)象,如果失敗就返回none。如果我們想要獲取到返回的對(duì)象就用group(num)函數(shù)來獲取,這個(gè)函數(shù)獲取的結(jié)果就是匹配成功的字符串,如果num為0的話,其實(shí)等效于group(),如果num為1的話就返回正則表達(dá)式第一個(gè)括號(hào)匹配成功的字符串,如果num為2的話就返回正則表達(dá)式第二個(gè)括號(hào)匹配成功的字符串

(1)匹配單個(gè)字符

字符功能位置
.匹配任意一個(gè)字符(除了\n)
[ ]

匹配[ ]中列舉的字符(可以是一個(gè)范圍)

\d匹配數(shù)字,0~9可以寫在[ ]中
\D

匹配非數(shù)字,除了數(shù)字以外都可以匹配成功

可以寫在[ ]中
\s匹配空白符,空格 ,Tab可以寫在[ ]中
\S匹配非空白符可以寫在[ ]中
\w
匹配0-9,a-z,A-Z,中文等等除了特殊符號(hào)以外的范圍
內(nèi)的字符
可以寫在[ ]中
\W

匹配非單詞子串,除了\w范圍 以內(nèi)的都可以匹配

可以寫在[ ]中

示例

import re
string='hello word!'
pat=re.match('.',string)
print(pat)
print(pat.group())
#輸出結(jié)果:<re.Match object; span=(0, 1), match='h'>  
# h

其中第一個(gè)輸出的結(jié)果就是返回的對(duì)象,span=(0,1)是表示匹配范圍為字符串的第0位(區(qū)間是左閉右開),匹配成功的字符串match='h'

如果用group()去獲取對(duì)象字符串就直接輸出 h

示例1:

import re
#單個(gè)匹配示例
 
#1.'.'號(hào)匹配
a='123hello你好'
a1=re.match('..',a)#正則表達(dá)式有兩個(gè)..那么就匹配字符串a(chǎn)前兩個(gè)字符
print(a1,a1.group())
#輸出結(jié)果:<re.Match object; span=(0, 2), match='12'> 12
 
#2.'.'號(hào)匹配
b='garrymod555'
b1=re.match('g..r',b)
print(b1,b1.group())
#輸出結(jié)果:<re.Match object; span=(0, 4), match='garr'> garr
 
#3.直接匹配:被匹配的字符串首字符要與正則表達(dá)式相同,大小寫一一對(duì)應(yīng)
c='python歐尼醬'
c1=re.match('p',c)
print(c1,c1.group())
#輸出結(jié)果:<re.Match object; span=(0, 1), match='p'> p
 
#4.利用[],枚舉匹配
d='Haolow'
d1=re.match('[hH]',d)  #這時(shí)候d 的開頭大小寫都可以匹配成功
print(d1,d1.group())
#輸出結(jié)果:<re.Match object; span=(0, 1), match='H'> H
 
#利用[],枚舉匹配0~9范圍的數(shù)字
num='51997asd'
num1=re.match('[0123456789]',num)
print(num1,num1.group())
#輸出結(jié)果:<re.Match object; span=(0, 1), match='5'> 5
 
#5.利用[],范圍匹配
e='ikuncxk'
e1=re.match('[a-z]',e)  #[]內(nèi)是表示a~z在字符范圍
print(e1,e1.group())
#輸出結(jié)果:<re.Match object; span=(0, 1), match='i'> i
 
#6.利用[],匹配多個(gè)范圍
f='567hhh'
f1=re.match('[2-68-9]',f)  #這個(gè)是表示匹配2~6和8~9 范圍以內(nèi)的數(shù)字(字母也是同樣的道理)
print(f1,f1.group())
#輸出結(jié)果:<re.Match object; span=(0, 1), match='5'> 5
 
#7.利用\d,匹配數(shù)字(另外一個(gè)是\D,這里就不講了,正則表達(dá)式匹配添加是跟\d完全相反的)
g='666985www'
g1=re.match('\d',g)   #
print(g1,g1.group())
#輸出結(jié)果:<re.Match object; span=(0, 1), match='6'> 6
 
#8.利用\s,匹配空白符(跟上面一樣\S,是\s反過來的,用法一樣,不講)
h='  91呵呵'
h1=re.match('\s',h)
print(h1,h1.group())
#輸出結(jié)果:<re.Match object; span=(0, 1), match=' '>
 
#9.利用\w,匹配0-9,a-z,A-Z,中文等等除了特色符號(hào)以外的范圍內(nèi)的字符
i='天問1號(hào)'
i1=re.match('\w',i)
print(i1,i1.group())
#輸出結(jié)果:<re.Match object; span=(0, 4), match='天問1號(hào)'> 天問1號(hào)
 
#10.利用\W,匹配特殊字符(\w范圍以外的字符)
k='@qq.com'
k1=re.match('\W',k)
print(k1,k1.group())
#輸出結(jié)果:<re.Match object; span=(0, 1), match='@'> @

示例2:(匹配失?。?/strong>

import re
kun='hellosad'
k=re.match('5',kun)
print(k)
#輸出結(jié)果:None

(2)匹配多個(gè)字符 字符功能/說明位置*

字符功能/說明位置
*

匹配前一個(gè)字符,這個(gè)字符出現(xiàn)0次到無限次(可有可無)

可以用在字符或者()之后

+

匹配前一個(gè)字符,這個(gè)字符必須出現(xiàn)一次以上(否則報(bào)錯(cuò))上限為無限

可以用在字符或者()之后

?

匹配前一個(gè)字符,這個(gè)字符出現(xiàn)0次到1次

可以用在字符或者()之后

{m}

匹配前?個(gè)字符出現(xiàn)m次

可以用在字符或者()之后

{m,n}

匹配前?個(gè)字符出現(xiàn)從m到n次,若省略m,則匹配0到n次,若省略n,則匹配m到無限次;若省略m,這匹配m,這匹配0到n次

可以用在字符或者()之后

示例代碼:

import re
 
# *  匹配多個(gè)字符
p='1112223haowww.com'
#示例1
p1=re.match('[\d]*',p)
print(p1.group())
#輸出結(jié)果:1112223
#示例2
p2=re.match('1*',p)
print(p2.group())
#輸出結(jié)果:111
#示例3
p3=re.match('1t*',p)
print(p3.group())  #不會(huì)報(bào)錯(cuò)
#輸出結(jié)果:1
 
# + 匹配多個(gè)字符
q='aaa112python'
#示例1
q1=re.match('[a-z]+',q)
print(q1.group())
#輸出結(jié)果:aaa
#示例2
q2=re.match('ai+',q)
#print(q2.group()) #報(bào)錯(cuò)
print(q2)
#輸出結(jié)果:None
 
# { }綜合使用
#示例1:匹配由大小寫字母以及數(shù)字組成的密碼
ret=re.match('[a-zA-Z0-9]{6}','321uyg88') #如果{}里面的數(shù)字大于8就會(huì)報(bào)錯(cuò),超過范圍了
print(ret.group()) #輸出結(jié)果:321uyg
#示例2:匹配8~12為由小寫字母和數(shù)字組成的密碼
res=re.match('[a-z0-9]{8,12}','123520ikun')
print(res.group())#輸出結(jié)果123520ikun

(3) 匹配開頭和結(jié)尾

字符功能
^匹配字符串的開頭
$匹配字符串的結(jié)尾

示例:

2.re.search() 函數(shù)

格式:

re.search('正則表達(dá)式','字符串')

說明:這個(gè)函數(shù)是從整個(gè)字符串去進(jìn)行匹配的,跟re.match()不同,re.match()是從開頭去匹配,如果開頭不一樣就返回None,而re.search()是看字符串的全局,直到匹配到滿足正則表達(dá)式才返回匹配對(duì)象,如果整個(gè)字符串都沒有找到匹配對(duì)象才會(huì)返回None

示例:

import re
r=re.search('wao','123waohhhq')
print(r.group())
#輸出結(jié)果:wao
 
s=re.search('q[0-9]?j','heheqq5jbye')
print(s.group())
#輸出結(jié)果:q5j

3.re.findall() 函數(shù)

格式:

re.findall('正則表達(dá)式','字符串')

說明:整個(gè)函數(shù)同樣也是從整個(gè)字符串來匹配,但是這個(gè)函數(shù)是吧整個(gè)字符串所以滿足正則表達(dá)式的子串以列表的形式返回(前面的函數(shù)都是返回一個(gè)對(duì)象,需要用group()函數(shù)來獲取對(duì)象的子串),而這個(gè)函數(shù)是直接返回一個(gè)含有全部子串的列表

示例:

import re
ret=re.findall('\d+','123www555abc789')
print(ret)
#輸出結(jié)果:['123', '555', '789']

4.re.finditer() 函數(shù)

格式:

re.finditer('正則表達(dá)式','字符串')

說明:這個(gè)函數(shù)跟re.findall() 差不多,只是前者是返回一個(gè)迭代器(需要用循環(huán)去依次獲取里面的對(duì)象),而后者是返回一個(gè)列表

示例:

import re
ret=re.finditer('\d+','Python999,C++555,Java666')
print(ret) #輸出的是迭代器地址
for i in ret:
    print(i.group(),end=' ')
#輸出結(jié)果:<callable_iterator object at 0x000001E35504B5E0>
#         999 555 666 

5.re.split() 函數(shù)

split()整個(gè)函數(shù)在之前的字符串操作初步講過,是一個(gè)切割函數(shù)Python學(xué)習(xí)------起步7(字符串的連接、刪除、修改、查詢與統(tǒng)計(jì)、類型判斷及字符串字母大小寫轉(zhuǎn)換)_Python歐尼醬的博客-CSDN博客

格式:

re.split(pat,string,times)

參數(shù)說明:

pat:是正則表達(dá)式

string:是字符串

times:是分割次數(shù)

功能作用:在整個(gè)字符串中,根據(jù)匹配成功的子串作為切割點(diǎn),對(duì)字符串進(jìn)行切割,然后返回一個(gè)列表類型

示例:

import re
cut=re.split('\d','hello 1 my 2 friend')
print(cut)
#輸出結(jié)果:['hello ', ' my ', ' friend']
 
cut_1=re.split(r':| ','Jack say:"I can do this all day"') #r表示后面為原字符串
print(cut_1)
#輸出結(jié)果:['Jack', 'say', '"I', 'can', 'do', 'this', 'all', 'day"']

6.re.sub() 函數(shù)

格式:

re.sub(pat,repalc,string,count,flag)

參數(shù):

pat:是表示正則表達(dá)式

replac:是要替換的字符串或者函數(shù)(必寫)

string:是匹配的字符串

count:是替換的最大次數(shù),如果不寫就默認(rèn)全部替換

flag:可選參數(shù),標(biāo)志符,用于控制正則表達(dá)式的匹配條件

功能說明:sub是substitute的縮寫,意思是取代,這個(gè)函數(shù)可以將匹配到的子串進(jìn)行取代替換,然后返回一個(gè)字符串類型

import re
kun=re.sub('\d[A-Z]','鶩','hello,4Baww5Kc8P')
print(kun)
#輸出結(jié)果:hello,鶩aww鶩c鶩
 
 
KUN=re.sub('\d[A-Z]','鶩','hello,4Baww5Kc8P',count=2)  #這里設(shè)置了count的值為2
print(KUN)
#輸出結(jié)果:hello,鶩aww鶩c8P

7.re.subn() 函數(shù)

re.subn(pat,repalc,string,count,flag)

參數(shù):

pat:是表示正則表達(dá)式

replac:是要替換的字符串或者函數(shù)(必寫)

string:是匹配的字符串

count:是替換的最大次數(shù),如果不寫就默認(rèn)全部替換

flag:可選參數(shù),標(biāo)志符,用于控制正則表達(dá)式的匹配條件

說明:這個(gè)函數(shù)的用法跟re.sub() 的用法是一樣的,只是返回值不一樣,這個(gè)函數(shù)的返回值是一個(gè)元組,格式:('返回的字符串','次數(shù)')

import re
def rep(temp):
    temp='GBT'
    return temp
su=re.subn('\d+',rep,'hao,w1q2d3') #不設(shè)置count,此時(shí)就是全部的替換次數(shù)
print(su)
#輸出結(jié)果:('hao,wGBTqGBTdGBT', 3)

到此這篇關(guān)于關(guān)于Python正則表達(dá)式模塊之re模塊的文章就介紹到這了,更多相關(guān)Python正則表達(dá)式 re模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用python tkinter開發(fā)一個(gè)爬取B站直播彈幕工具的實(shí)現(xiàn)代碼

    使用python tkinter開發(fā)一個(gè)爬取B站直播彈幕工具的實(shí)現(xiàn)代碼

    這篇文章主要介紹了使用python tkinter開發(fā)一個(gè)爬取B站直播彈幕的工具,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Python實(shí)現(xiàn)梯度下降法的示例代碼

    Python實(shí)現(xiàn)梯度下降法的示例代碼

    梯度下降法的機(jī)器學(xué)習(xí)的重要思想之一,梯度下降法的目標(biāo),是使得代價(jià)函數(shù)最小。本文將對(duì)梯度下降算法的原理及實(shí)現(xiàn)展開詳細(xì)介紹,感興趣的快跟隨小編一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Python視頻處理模塊之moviepy的用法教程

    Python視頻處理模塊之moviepy的用法教程

    隨著自媒體時(shí)代,現(xiàn)在對(duì)視頻的處理變得越來越常見。而?Python?有一個(gè)專門用于處理視頻的第三方庫:moviepy,可以非常方便地對(duì)視頻進(jìn)行一些簡(jiǎn)單處理,下面我們就來看一看
    2022-07-07
  • Mac中pyenv的安裝與使用教程

    Mac中pyenv的安裝與使用教程

    pyenv支持linux下python多版本的共存和版本之間切換,非常方便,下面這篇文章主要給大家介紹了關(guān)于Mac中pyenv安裝與使用的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • pandas.DataFrame.drop_duplicates 用法介紹

    pandas.DataFrame.drop_duplicates 用法介紹

    這篇文章主要介紹了pandas.DataFrame.drop_duplicates 用法介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • python讀文件的步驟

    python讀文件的步驟

    在本篇文章里小編給大家分享的是關(guān)于python讀文件的步驟以及相關(guān)知識(shí)點(diǎn),需要的朋友們參考下。
    2019-10-10
  • django mysql數(shù)據(jù)庫及圖片上傳接口詳解

    django mysql數(shù)據(jù)庫及圖片上傳接口詳解

    這篇文章主要介紹了django mysql數(shù)據(jù)庫及圖片上傳接口詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 推薦11個(gè)實(shí)用Python庫

    推薦11個(gè)實(shí)用Python庫

    這篇文章主要推薦了11個(gè)實(shí)用Python庫,都有這不錯(cuò)的群眾基礎(chǔ),非常好用,也都很實(shí)用,推薦給大家。
    2015-01-01
  • python中dir()與__dict__屬性的區(qū)別淺析

    python中dir()與__dict__屬性的區(qū)別淺析

    這篇文章主要給大家介紹了關(guān)于python中dir()與__dict__屬性的區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • Python容器使用的5個(gè)技巧和2個(gè)誤區(qū)總結(jié)

    Python容器使用的5個(gè)技巧和2個(gè)誤區(qū)總結(jié)

    在本篇文章里小編給大家整理的是關(guān)于Python容器使用的5個(gè)技巧和2個(gè)誤區(qū)的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們學(xué)習(xí)下。
    2019-09-09

最新評(píng)論