最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在 Python 中如何使用 Re 模塊的正則表達(dá)式通配符

 更新時(shí)間:2023年06月12日 11:12:03   作者:跡憶客  
這篇文章主要介紹了在 Python 中如何使用 Re 模塊的正則表達(dá)式通配符,本文詳細(xì)解釋了如何在 Python 中使用帶有通配符的 re.sub() 來(lái)匹配字符串與正則表達(dá)式,需要的朋友可以參考下

通配符在正則表達(dá)式中用作表示或交換一個(gè)或多個(gè)字符的符號(hào)。 這些主要用于簡(jiǎn)化搜索條件。

本文詳細(xì)解釋了如何在 Python 中使用帶有通配符的 re.sub() 來(lái)匹配字符串與正則表達(dá)式。

使用 re.sub() 函數(shù)在 Python 中使用通配符進(jìn)行正則表達(dá)式操作

Python 中的 re 模塊用于對(duì)正則表達(dá)式 (RegEx) 進(jìn)行操作。 這些是用于查找一個(gè)字符串或一組字符串的唯一字符串。

將文本與特定模式進(jìn)行比較可以確定它是否存在。

它還可以將一個(gè)模式劃分為一個(gè)或多個(gè)子模式。 通過(guò) re 模塊在 Python 中提供正則表達(dá)式支持。

它的主要目的是在正則表達(dá)式中搜索字符串。

在我們了解如何在 Python 中使用帶有通配符的 re.sub() 之前,讓我們學(xué)習(xí)一下 re.sub() 函數(shù)在普通字符串語(yǔ)句上的實(shí)現(xiàn)。

在 Python 中使用 re.sub() 模塊替換正則表達(dá)式中的匹配項(xiàng)

re.sub() 函數(shù)用字符串替換給定文本中的一個(gè)或多個(gè)匹配項(xiàng)。

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

它返回通過(guò)用替換 repl 替換字符串中模式最左邊的非重疊事件而創(chuàng)建的字符串。

在沒有匹配的情況下,字符串以其原始形式返回。 如果 repl 是字符串,則處理任何反斜杠轉(zhuǎn)義。 repl 也可以是一個(gè)函數(shù)。

讓我們理解下面的代碼示例。

import re
rex = '[0-9]+'
string_reg = 'ID - 54321, Pay - 586.32'
repl = 'NN'
print('Original string')
print(string_reg)
result = re.sub(rex, repl, string_reg)
print('After replacement')
print(result)

代碼的作用:

  • 第一行代碼導(dǎo)入 re 模塊。
  • 要搜索的模式存儲(chǔ)在變量 rex 中。 量詞 - [0-9]+ 表示一組 0-9 的數(shù)字,其小數(shù)位可以擴(kuò)展到任意位數(shù)。
  • 執(zhí)行子操作的字符串存儲(chǔ)在變量 string_reg 中。
  • 替換模式的字符串存儲(chǔ)在變量 repl 中。
  • re.sub() 操作在字符串變量 string_reg 中查找模式 rex 并將其替換為 repl。 返回的字符串存儲(chǔ)在變量 result 中。
result = re.sub(rex, repl, string_reg)

輸出:所有數(shù)字都被替換為“NN”,而所有字母數(shù)字都保持不變。

Original string
ID - 54321, Pay - 586.32
After replacement
ID - NN, Pay - NN.NN

了解如何在 re.sub() 子模塊中使用通配符

本文主要關(guān)注四種類型的通配符—— . (點(diǎn))、* 、?+ 。 了解它們各自的作用對(duì)于學(xué)習(xí)如何在 Python 中使用帶有通配符的 re.sub() 非常重要。

. (點(diǎn)) - 將 re.sub. Python 中的通配符匹配除新行之外的任何字符。 下面程序中引入了re模塊,在一個(gè)字符串變量string_reg中存放了三個(gè)字符串實(shí)例。

re.sub(). 在 Python 中使用通配符時(shí),string_reg 變量會(huì)被 re.sub() 函數(shù)返回的結(jié)果覆蓋。 當(dāng)點(diǎn)與新字符匹配時(shí),程序會(huì)搜索模式 ad 以及在 ad 之后重復(fù)的任意數(shù)量的 d。

在輸出中可以看出,每次程序找到模式 ad. 時(shí),都會(huì)將其替換為 REMOVED。

import re
string_reg = 'a23kaddhh234 ... add2asdf675 ... xxxadd2axxx'
string_reg = re.sub(r'ad.', 'REMOVED ', string_reg)
print(string_reg)

輸出:

a23kREMOVED hh234 ... REMOVED 2asdf675 ... xxxREMOVED 2axxx

2.星號(hào) (*) - 在 Python 中使用帶有此通配符的 re.sub() 來(lái)為前面的 RE 提供盡可能多的重復(fù),在結(jié)果 RE 中匹配 0 次或更多次重復(fù)。

例如,ad* 匹配字母“a”、“ad”或后跟任意數(shù)量的 d 的“a”。

可以在此處的輸出中看到,“a”和“ad”的每個(gè)實(shí)例都被關(guān)鍵字“PATCH”替換。

import re
string_reg = 'a23kaddhh234 ... add2asdf675 ... xxxadd2axxx'
string_reg = re.sub(r'ad*', 'PATCH', string_reg)
print(string_reg)

輸出:

PATCH23kPATCHhh234 ... PATCH2PATCHsdf675 ... xxxPATCH2PATCHxxx

3.+ - 在 Python 中使用帶有此通配符的 re.sub() 來(lái)匹配新 RE 中先前 RE 的 1 次或多次重復(fù)。 Ad+ 不會(huì)匹配 ‘a’; 相反,它匹配 ‘a’ 后跟任何非零數(shù)的 d。

該函數(shù)搜索模式“ad…”,其中“…”表示后續(xù) RE“d”的重復(fù)編號(hào),并將其替換為“POP”。

import re
string_reg = 'a23kaddhh234 ... add2asdf675 ... xxxadd2axxx'
string_reg = re.sub(r'ad+', 'POP', string_reg)
print(string_reg)

輸出:

a23kPOPhh234 ... POP2asdf675 ... xxxPOP2axxx

4.? - 使下一個(gè) RE 匹配前一個(gè) RE 的 0 或 1 次重復(fù)。 模式 ad? 匹配“a”或“ad”。

該程序找到“a”或“ad”的實(shí)例并將它們替換為正則表達(dá)式 (REGEX)“POP”。

import re
string_reg = 'a23kaddhh234 ... add2asdf675 ... xxxadd2axxx'
string_reg = re.sub(r'ad?', 'POP', string_reg)
print(string_reg)

輸出:

POP23kPOPdhh234 ... POPd2POPsdf675 ... xxxPOPd2POPxxx

在 Python 中一起使用兩個(gè)或多個(gè)正則表達(dá)式通配符

有時(shí),在 Python 中使用帶通配符的 re.sub() 僅使用一個(gè)量詞不足以獲得所需的結(jié)果。 組合量詞可以將更復(fù)雜的模式傳遞給系統(tǒng)。

讓我們了解其中的一些。

*?、+?、?? - 在前面的示例中,我們了解了“.”、“+”、“*”量詞。 它們都是貪心的,意味著它們匹配盡可能多的文本。

例如,如果 RE<.*><a> b <c> 匹配,它將匹配完整的字符串而不是僅僅匹配 <a>,這通常不是所需的行為。

? 最后添加量詞來(lái)解決這個(gè)問題。 量詞指示它以最小或非貪婪的方式進(jìn)行匹配,這意味著匹配的字符最少。

當(dāng)使用 RE<.*?> 模式時(shí),只有 <a> 會(huì)匹配。

import re
string_reg = 'as56ad5 ... dhgasd55df ... xxxadd2axxx'
string_reg = re.sub(r'ad*?', 'SUGAR', string_reg)
print(string_reg)

輸出:ad*? 量詞只搜索“a”的實(shí)例。

SUGARs56SUGARd5 ... dhgSUGARsd55df ... xxxSUGARdd2SUGARxxx

對(duì)于 ad+?: 它只搜索“ad”的實(shí)例。

as56SUGAR5 ... dhgasd55df ... xxxSUGARd2axxx

對(duì)于 ad??:它還只搜索“a”的實(shí)例。

SUGARs56SUGARd5 ... dhgSUGARsd55df ... xxxSUGARdd2SUGARxxx

*+、++、?+(也稱為所有格量詞)- 類似于“*”、“+”和“?” 量詞,帶有“+”的量詞盡可能頻繁地匹配。

當(dāng)它后面的表達(dá)式不匹配時(shí),這些不允許像貪婪量詞那樣進(jìn)行回溯。 這種類型的量詞稱為所有格量詞。

例如,a*a 將匹配“aaaa”,因?yàn)?a* 匹配所有四個(gè) a,但是當(dāng)遇到最后一個(gè)“a”時(shí),表達(dá)式回溯,a* 總共只匹配三個(gè) a 和最后一個(gè)“a” 匹配第四個(gè)“a”。

但是當(dāng)表達(dá)式 a*+a 用來(lái)匹配 “aaaa” 時(shí),a*+ 會(huì)匹配所有四個(gè) “a”,但是它不能回溯,不會(huì)匹配到最后的 “a”,因?yàn)樗也坏礁?要匹配的字符。

x*+、x++x?+ 的等價(jià)物分別是 (?>x*)、(?>x+)(?>x?)。 讓我們看一下程序以更好地理解這個(gè)概念。

import regex
string_reg = 'as56ad5 ... dhgasd55df ... xxxadd2axxx'
string_reg = regex.sub(r'ad*+', 'SUGAR', string_reg)
print(string_reg)

注意 :re 模塊不支持所有格量詞。 請(qǐng)改用 regex() 模塊。

輸出:查找 a 或 ‘adddd…’ 的實(shí)例。

SUGARs56SUGAR5 ... dhgSUGARsd55df ... xxxSUGAR2SUGARxxx

對(duì)于 ad++: 查找“ad”或“adddd…”的實(shí)例。

as56SUGAR5 ... dhgasd55df ... xxxSUGAR2axxx

對(duì)于 ad+?:ad++ 的行為相同。

as56SUGAR5 ... dhgasd55df ... xxxSUGARd2axxx

通過(guò)在 Python 中添加通配符,使用正則表達(dá)式模式和 re.sub() 函數(shù)對(duì)字符串執(zhí)行操作

我們已經(jīng)學(xué)習(xí)了如何在 Python 中使用帶有通配符的 re.sub() 。 現(xiàn)在我們將結(jié)合使用這些概念來(lái)搜索正則表達(dá)式中的字符串模式并替換整個(gè)單詞而不僅僅是字符串模式。

問題陳述向我們展示了一個(gè)字符串和一個(gè)模式。 需要在給定的字符串中搜索模式。

一旦找到,re.sub() 函數(shù)將替換整個(gè)單詞。

示例:在開頭找到模式時(shí)替換整個(gè)單詞

1.導(dǎo)入 re 模塊。

2.創(chuàng)建一個(gè)變量 string_reg 并存儲(chǔ)任何字符串值。 這里存儲(chǔ)了一個(gè)復(fù)合字符串,這意味著 re.sub() 函數(shù)將對(duì)字符串內(nèi)的所有四個(gè)組實(shí)現(xiàn)其效果。

string_reg = """\
... 23khadddddh234 > REMOVED23khh234
... add2asdf675 > REMOVED2asdf675""

該函數(shù)需要在字符串中找到一個(gè)模式,找到后替換整個(gè)字符串。 要查找的模式是“添加”,因此使用量詞的組合來(lái)實(shí)現(xiàn)所需的結(jié)果。

該組合應(yīng)采用與“ad”、“add”或“addddd”相匹配的方式。 但是,add23khh234 和 add2asdf675 都不匹配。

最好的方法是使用 add.+?。

string_reg = re.sub(r'add.+? ', 'REMOVED ', string_reg)

代碼

import re
string_reg = """\
... 23khadddddh234 > REMOVED23khh234
... add2asdf675 > REMOVED2asdf675"""
string_reg = re.sub(r'add.+? ', 'REMOVED ', string_reg)
print(string_reg)

輸出:程序搜索“ad…”,找到后將其替換為 repl“REMOVED”。 如果“ad…”出現(xiàn)在開頭,它會(huì)替換整個(gè)單詞。

... 23khREMOVED > REMOVED23khh234
... REMOVED > REMOVED2asdf675

總結(jié)

生動(dòng)描述了如何在Python中使用帶通配符的 re.sub() 。 本文的第一部分側(cè)重于將 Python 函數(shù) re.sub 與簡(jiǎn)單的 REGEX 結(jié)合使用。

然后詳細(xì)解釋了在 re.sub() 中使用通配符的概念。

閱讀本文后,讀者可以輕松地在 Python 中使用帶有通配符的 re.sub() 并創(chuàng)建在 REGEX 中搜索字符串模式的程序。

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

相關(guān)文章

  • 利用PyQt5模擬實(shí)現(xiàn)網(wǎng)頁(yè)鼠標(biāo)移動(dòng)特效

    利用PyQt5模擬實(shí)現(xiàn)網(wǎng)頁(yè)鼠標(biāo)移動(dòng)特效

    不知道大家有沒有發(fā)現(xiàn),博客園有些博客左側(cè)會(huì)有鼠標(biāo)移動(dòng)特效。通過(guò)移動(dòng)鼠標(biāo),會(huì)形成類似蜘蛛網(wǎng)的特效,本文將用PyQt5實(shí)現(xiàn)這一特效,需要的可以參考一下
    2022-03-03
  • Python偏函數(shù)partial的用法小結(jié)

    Python偏函數(shù)partial的用法小結(jié)

    本文全面介紹了Python的偏函數(shù)partial的用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2026-01-01
  • Python Kivy基礎(chǔ)教程的使用

    Python Kivy基礎(chǔ)教程的使用

    本文主要介紹了Python Kivy基礎(chǔ)教程的使用,包括?Label、Button、TextInput、Image、Spinner、Checkbox?和?ToggleButton?的用法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-04-04
  • pycharm運(yùn)行scrapy過(guò)程圖解

    pycharm運(yùn)行scrapy過(guò)程圖解

    這篇文章主要介紹了pycharm運(yùn)行scrapy過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • python matplotlib保存圖片不全問題及解決

    python matplotlib保存圖片不全問題及解決

    這篇文章主要介紹了python matplotlib保存圖片不全問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • python定義類的簡(jiǎn)單用法

    python定義類的簡(jiǎn)單用法

    在本篇文章里小編給大家分享的是一篇關(guān)于python定義類的簡(jiǎn)單用法,需要的朋友們可以參考下。
    2020-07-07
  • Python實(shí)現(xiàn)FTP上傳文件或文件夾實(shí)例(遞歸)

    Python實(shí)現(xiàn)FTP上傳文件或文件夾實(shí)例(遞歸)

    本篇文章主要介紹了Python實(shí)現(xiàn)FTP上傳文件或文件夾實(shí)例(遞歸),具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-01-01
  • Python裝飾器原理與用法分析

    Python裝飾器原理與用法分析

    這篇文章主要介紹了Python裝飾器原理與用法,結(jié)合實(shí)例形式分析了Python裝飾器的概念、原理、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2018-04-04
  • Flask框架的學(xué)習(xí)指南之開發(fā)環(huán)境搭建

    Flask框架的學(xué)習(xí)指南之開發(fā)環(huán)境搭建

    本文是Flask框架的學(xué)習(xí)指南系列文章的第一篇,主要給大家講述的是開發(fā)環(huán)境的搭建工作,有需要的小伙伴可以參考下
    2016-11-11
  • Python中hashlib模塊的摘要算法詳解

    Python中hashlib模塊的摘要算法詳解

    這篇文章主要介紹了Python中hashlib模塊的摘要算法詳解,摘要算法又稱哈希算法、散列算法,它通過(guò)一個(gè)函數(shù),把任意長(zhǎng)度的數(shù)據(jù)轉(zhuǎn)換為一個(gè)長(zhǎng)度固定的數(shù)據(jù)串,通常用16進(jìn)制的字符串表示,需要的朋友可以參考下
    2023-08-08

最新評(píng)論

呼和浩特市| 大厂| 阿拉尔市| 天祝| 三门县| 沂南县| 安阳县| 嘉峪关市| 容城县| 搜索| 辽阳市| 麻阳| 东乡族自治县| 孝昌县| 蓬莱市| 汕尾市| 博野县| 公安县| 松滋市| 呼图壁县| 宣恩县| 宁蒗| 贵阳市| 张家港市| 集安市| 海丰县| 富蕴县| 柘荣县| 湟源县| 永年县| 黄山市| 贵定县| 历史| 璧山县| 渝北区| 神木县| 友谊县| 临武县| 南安市| 上林县| 福鼎市|