国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python-re模塊-正則表達(dá)式模塊常用方法

這篇具有很好參考價(jià)值的文章主要介紹了Python-re模塊-正則表達(dá)式模塊常用方法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

re模塊介紹:

Python的re模塊提供了正則表達(dá)式的功能,可以用來(lái)進(jìn)行高級(jí)的字符串匹配和處理。re模塊的主要功能包括:

  1. 編譯正則表達(dá)式 - 使用re.compile()可以編譯正則表達(dá)式字符串,生成正則表達(dá)式對(duì)象。

  2. 匹配字符串 - 使用正則表達(dá)式對(duì)象的match()、search()、findall()等方法可以在字符串進(jìn)行匹配。

  3. 替換字符串 - 使用sub()和subn()方法可以使用正則表達(dá)式進(jìn)行字符串替換。

  4. 分割字符串 - 使用split()方法可以按照正則表達(dá)式的匹配結(jié)果分割字符串。

  5. 獲取匹配信息 - match對(duì)象包含了各種匹配信息,如匹配字符串、位置等。

  6. 標(biāo)志 - 可以使用標(biāo)志來(lái)修改正則表達(dá)式的匹配方式,如忽略大小寫(xiě),多行匹配等。

  7. 模塊級(jí)函數(shù) - re模塊還提供了模塊級(jí)的正則匹配函數(shù),如escape()可以對(duì)字符串轉(zhuǎn)義。

re模塊的這些功能覆蓋了正則表達(dá)式的常見(jiàn)用法。使用re模塊可以簡(jiǎn)化字符串的模式匹配、信息提取、過(guò)濾替換、切分等操作

需要注意的一點(diǎn)是,re模塊主要針對(duì)ASCII字符,對(duì)Unicode的支持不太友好。此時(shí)可以考慮第三方模塊如regex

總之,re模塊是Python中使用正則表達(dá)式的最基礎(chǔ)的模塊,非常值得學(xué)習(xí)和掌握

Python re模塊詳解

re模塊提供正則表達(dá)式模式匹配操作,主要有以下函數(shù):

match()

匹配字符串開(kāi)頭位置,返回match對(duì)象或None:

import re

m = re.match('foo','foo') 
print(m.group()) # 'foo'

m = re.match('foo','bar')
print(m) # None

search()

搜索字符串任意位置,返回match對(duì)象或None:

m = re.search('foo','hello food')
print(m.group()) # 'foo'

findall()

搜索字符串,返回所有匹配的列表:

m = re.findall('\d','123abc456')
print(m) # ['1', '2', '3', '4', '5', '6']

sub()

使用正則表達(dá)式進(jìn)行字符串替換:

text = re.sub('\d', '0', '123abc456')
print(text) # '000abc000' 

split()

使用正則表達(dá)式進(jìn)行字符串分割:

m = re.split('\d+', '123abc456') 
print(m) # ['abc', '']

compile()

編譯正則表達(dá)式,返回pattern對(duì)象:

pat = re.compile('\d') 
m = pat.match('123')

finditer()

在Python的re模塊中,re.finditer()是非常有用的一個(gè)正則表達(dá)式匹配函數(shù)。

re.finditer()的作用是在字符串中找到所有的匹配,并返回一個(gè)迭代器。相比re.findall()re.finditer()有以下區(qū)別:

  • re.findall():返回一個(gè)匹配字符串的列表
  • re.finditer():返回一個(gè)匹配對(duì)象迭代器

示例:

import re

s = 'hello 123 456 world'

matches = re.findall('\d+', s)
print(matches) # ['123', '456']

iterator = re.finditer('\d+', s)
print(iterator) # <callable_iterator object at 0x10f5f3b50>

for match in iterator:
    print(match) 
    
# <re.Match object; span=(6, 9), match='123'>
# <re.Match object; span=(10, 13), match='456'>

re.finditer()的返回對(duì)象是一個(gè)迭代器,每次迭代返回一個(gè)Match對(duì)象,包含匹配的字符串和位置。

主要優(yōu)點(diǎn)是:

  • 不需要先存儲(chǔ)所有匹配,更save內(nèi)存
  • 可以逐個(gè)訪問(wèn)每個(gè)匹配
  • 提供了匹配的位置信息

所以在需要定位每個(gè)匹配的位置時(shí),re.finditer()非常有用。

fullmatch()

匹配整個(gè)字符串,返回match對(duì)象或None:

import re

m = re.fullmatch('foo','foo')
print(m.group()) # 'foo' 

m = re.fullmatch('foo','foo bar')  
print(m) # None

escape()

將特殊字符轉(zhuǎn)義,可以將字符串轉(zhuǎn)化為正則表達(dá)式的字符串形式:

escaped = re.escape('http://example.com')  
print(escaped) # 'http:\/\/example\.com'

purge()

清除緩存的正則表達(dá)式,可以避免重復(fù)編譯正則表達(dá)式:

pat = re.compile(r'\d+')
re.purge() # 清除緩存

match.expand()

使用匹配到的組內(nèi)容,替換字符串模板:

m = re.match(r'(?P<name>\w+) (\w+)', 'John Doe')
print(m.expand('Hello \g<name>')) # 'Hello John'

(?P\w+)和 group(“name”) 搭配使用

import re

pattern = r'(?P<first_name>\w+) (?P<last_name>\w+)'

string = 'John Doe'

# 匹配字符串
m = re.match(pattern, string)

# 使用命名組獲取匹配
first_name = m.group('first_name') 
last_name = m.group('last_name')

print(first_name) # John
print(last_name) # Doe

# 替換字符串
new_string = re.sub(pattern, r'\g<last_name>, \g<first_name>', string)
print(new_string) # Doe, John

在這個(gè)例子中,正則表達(dá)式模式使用了兩個(gè)命名捕獲組first_name和last_name。

然后在獲取匹配后,可以直接通過(guò)命名引用匹配的內(nèi)容。

在替換字符串時(shí),也可以利用命名組引用,使代碼更簡(jiǎn)潔清晰。

所以命名捕獲組可以讓正則匹配和處理更高效方便。

以上是re模塊的常用函數(shù)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-629974.html

到了這里,關(guān)于Python-re模塊-正則表達(dá)式模塊常用方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Python 正則表達(dá)式RE知識(shí)學(xué)習(xí)

    正則表達(dá)式(Regular Expression)是一種強(qiáng)大的文本模式匹配工具,常用于在字符串中查找、替換、分割等操作。在 Python 中,可以使用內(nèi)置的 re 模塊來(lái)操作正則表達(dá)式。 字符匹配: 普通字符:正則表達(dá)式中的普通字符(如字母、數(shù)字、特殊字符)與字符串中的對(duì)應(yīng)字符進(jìn)行匹

    2024年02月09日
    瀏覽(98)
  • Python:正則表達(dá)式之re.group()用法

    Python正則表達(dá)式之re.group()用法學(xué)習(xí)筆記 正則表達(dá)式是在處理字符串時(shí)非常有用的工具,而re.group()是在匹配到的文本中提取特定分組內(nèi)容的方法之一。 在正則表達(dá)式中,通過(guò)圓括號(hào)可以創(chuàng)建一個(gè)或多個(gè)分組。re.group()用于獲取匹配到的文本中的指定分組內(nèi)容。 輸出結(jié)果: grou

    2024年01月17日
    瀏覽(16)
  • 006集 正則表達(dá)式 re 應(yīng)用實(shí)例—python基礎(chǔ)入門(mén)實(shí)例

    006集 正則表達(dá)式 re 應(yīng)用實(shí)例—python基礎(chǔ)入門(mén)實(shí)例

    正則表達(dá)式指預(yù)先定義好一個(gè) “ 字符串模板 ” ,通過(guò)這個(gè) “ 字符串模 板” 可以匹配、查找和替換那些匹配 “ 字符串模板 ” 的字符串。 Python的中 re 模塊,主要是用來(lái)處理正則表達(dá)式,還可以利用 re 模塊通過(guò)正則表達(dá)式來(lái)進(jìn)行網(wǎng)頁(yè)數(shù)據(jù)的爬取和存儲(chǔ)。 正則表達(dá)式的英文

    2024年02月01日
    瀏覽(31)
  • python re.findall和re.search同樣的正則表達(dá)式,為什么規(guī)則不一樣??

    今天遇到一個(gè)問(wèn)題,在使用python的re.findall和re.search的過(guò)程中,發(fā)現(xiàn)一個(gè)奇怪的事情,同樣的表達(dá)式,兩者的表現(xiàn)卻不一樣,例如下述代碼: res1是我所希望的結(jié)果,然后查了一段時(shí)間的原因,發(fā)現(xiàn)二者是在使用捕獲分組(xxx)和非捕獲分組(?:xxx)有區(qū)別,re.search使用的是非捕獲方

    2024年02月16日
    瀏覽(26)
  • re --- 正則表達(dá)式操作

    模式和被搜索的字符串既可以是 Unicode 字符串 (str) ,也可以是8位字節(jié)串 (bytes)。 但是,Unicode 字符串與 8 位字節(jié)串不能混用:也就是說(shuō),不能用字節(jié)串模式匹配 Unicode 字符串,反之亦然;同理,替換操作時(shí),替換字符串的類(lèi)型也必須與所用的模式和搜索字符串的類(lèi)型一致。

    2024年02月08日
    瀏覽(26)
  • 【從零學(xué)習(xí)python 】63.正則表達(dá)式中的re.Match類(lèi)及其屬性和方法介紹

    當(dāng)我們調(diào)用 re.match 方法、 re.search 方法,或者對(duì) re.finditer 方法的結(jié)果進(jìn)行迭代時(shí),拿到的數(shù)據(jù)類(lèi)型都是 re.Match 對(duì)象。 這個(gè)類(lèi)里定義了相關(guān)的屬性,可以直接讓我們來(lái)使用。 屬性和方法 說(shuō)明 pos 搜索的開(kāi)始位置 endpos 搜索的結(jié)束位置 string 搜索的字符串 re 當(dāng)前使用的正則表達(dá)

    2024年02月11日
    瀏覽(40)
  • 正則表達(dá)式 re庫(kù)的使用

    模式 描述 ^ 匹配 字符串的開(kāi)始 w 匹配 字母數(shù)字及下劃線 W 匹配 非 字母數(shù)字及下劃線 s 匹配 任意空白字符,即空格 S 匹配 任意 非空 字符 d 匹配 任意數(shù)字,等價(jià)于[0-9], d+ 表示匹配多個(gè)數(shù)字 D 匹配 任意 非 數(shù)字 A 匹配字符串開(kāi)始 Z 匹配字符串結(jié)束,如果是存在換行,

    2024年02月10日
    瀏覽(59)
  • 8.網(wǎng)絡(luò)爬蟲(chóng)—正則表達(dá)式RE實(shí)戰(zhàn)

    8.網(wǎng)絡(luò)爬蟲(chóng)—正則表達(dá)式RE實(shí)戰(zhàn)

    前言 : ??????個(gè)人簡(jiǎn)介:以山河作禮。 ??????:Python領(lǐng)域新星創(chuàng)作者,CSDN實(shí)力新星認(rèn)證 ??????此專欄文章是專門(mén)針對(duì)網(wǎng)絡(luò)爬蟲(chóng)基礎(chǔ),歡迎免費(fèi)訂閱! ?????第一篇文章《1.認(rèn)識(shí)網(wǎng)絡(luò)爬蟲(chóng)》獲得 全站熱榜第一 ,python 領(lǐng)域熱榜第一 , 第四篇文章《4.網(wǎng)絡(luò)爬蟲(chóng)—

    2023年04月08日
    瀏覽(18)
  • Python re.findall()中的正則表達(dá)式包含多個(gè)括號(hào)時(shí)的返回值——包含元組的列表

    當(dāng) re.findall() 中的正則表達(dá)式包含多個(gè)括號(hào)時(shí),返回值是一個(gè)列表,其中每個(gè)元素都是一個(gè)元組。這個(gè)元組的長(zhǎng)度與正則表達(dá)式中括號(hào)的數(shù)量相同,元組中的每個(gè)元素都是與相應(yīng)括號(hào)中的模式匹配的文本。 輸出:

    2024年02月19日
    瀏覽(25)
  • 【SQL-正則】利用正則表達(dá)式進(jìn)行過(guò)濾操作(常用正則表達(dá)式)

    1、由數(shù)字、26個(gè)英文字母或者下劃線組成的字符串 2、非負(fù)整數(shù)(正整數(shù) + 0 ) 3、正整數(shù) 4、非正整數(shù)(負(fù)整數(shù) + 0) 5、負(fù)整數(shù) 6、整數(shù) 7、非負(fù)浮點(diǎn)數(shù)(正浮點(diǎn)數(shù) + 0) 8、正浮點(diǎn)數(shù) 9、非正浮點(diǎn)數(shù)(負(fù)浮點(diǎn)數(shù) + 0) 10、負(fù)浮點(diǎn)數(shù) 11、浮點(diǎn)數(shù) 12、由26個(gè)英文字母組成的字符串 13、

    2024年02月12日
    瀏覽(32)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包