在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    Python其實(shí)很簡(jiǎn)單 第十一章 正則表達(dá)式

    正則表達(dá)式是一個(gè)特殊的字符序列,它用來檢查一個(gè)字符串是否與某種模式匹配。正則表達(dá)式在編譯程序中至關(guān)重要,但并不是每個(gè)人都需要特別深入的學(xué)習(xí)和掌握。在此,只介紹一些最基本的應(yīng)用。

    1、元字符

    元字符是構(gòu)成正則表達(dá)式的一些特殊字符。在正則表達(dá)式中,元字符被賦予了新的含義。

    下面介紹一些常用的元字符及其含義:

    . 匹配除換行符以外的任意字符。

    w 匹配字母、數(shù)字、下劃線或漢字。

    W 匹配w所匹配的字符以外的字符。

    s 匹配單個(gè)空白符(包括Tab鍵和換行符)。

    S 匹配除s匹配的字符以外的字符。

    d 匹配數(shù)字。

    b 匹配單詞的分界符,如:空格、標(biāo)點(diǎn)符號(hào)或換行符。

    ^ 匹配字符串的開始

    $ 匹配字符串的結(jié)束

    2、限定符

    限定符是在正則表達(dá)式中用來指定數(shù)量的字符。常用的限定符有:

    ? 匹配前面的字符0或1次。如:zo?m可以匹配zom和zm,但不能匹配 zoom

    + 匹配前面的字符1或n次。如:zo?m可以匹配zom和zoom,但不能匹配zm

    * 匹配前面的字符0或n次。如:zo?m可以匹配zom、zoom和zm

    {n} 匹配前面的字符n次。如:zo{2}m可以匹配zoom,但不能匹配zom和zm

    {n,} 匹配前面的字符至少n次。如:zo{1,}m可以匹配zom和zoom,但不能匹配zm

    {n,m} 匹配前面的字符至少n次,最多m次。如:zo{1,2}m可以匹配zom和zoom,但不能匹配zm

    3、方括號(hào)”[ ]”的用途

    方括號(hào)“[ ]”里可以列出某個(gè)字符范圍。如:[aeiou]表示匹配任意一個(gè)元音字母,[zqsl]表示匹配姓氏“趙錢孫李”的拼音第一個(gè)字母。

    4、排除字符

    方括號(hào)”[ ]”中的“^”字符表示排除的意思,如:[^aeiou]表示匹配任意一個(gè)非元音字母的字符。

    5、選擇字符

    字符“|”相當(dāng)于“或”。如:(^d{3}[-]d{8})|(^d{4}[-]d{7})$可以匹配形如” – ”或“ – ”的電話號(hào)碼格式。

    6、轉(zhuǎn)義字符

    對(duì)于已經(jīng)用于定義元字符和限定符的字符,需要加轉(zhuǎn)義符“”來表示。

    如:為了匹配形如“192.168.0.1”的IPv4地址(1~255.0~255.0~255.0~255),可以用這樣的正則表達(dá)式:^(25[0-5]|2[0-4][0-9]|[0,1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]).(25[0-5]|2[0-4][0-9]|[0,1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0).(25[0-5]|2[0-4][0-9]|[0,1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0).(25[0-5]|2[0-4][0-9]|[0,1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$

    這里解釋一下第一段IP地址的規(guī)則,取值范圍為1~255,可分解為以下情況:

    250~255:25[0-5];

    200~249:2[0-4][0-9];

    100~199:[01]{1}[0-9]{2};

    0~99: [0-9]{1}[1-9]

    再加上”.”: .

    其他三段地址和第一段相似。

    7、“( )”可以用于分組

    在正則表達(dá)式中,用“( )”括起來的部分是一個(gè)整體。

    8、r(或R)的意義

    在正則表達(dá)式中,為了保證模式字符串為原生字符串(沒有經(jīng)過加工處理的字符串),可以在模式字符串前加上一個(gè)字符‘r’或‘R’。例如:

    # 這里用到對(duì)的re.match()方法接下來介紹

    >>> import re # 導(dǎo)入re模塊

    >>> re.match(‘bPy[a-z]+’,’Python’) # 表達(dá)式’bPy[a-z]+’不能匹配’Python’

    >>> re.match(‘bPy[a-z]+’,’Python’) # 表達(dá)式’bPy[a-z]+’可以匹配’Python’

    在上述代碼中,原本要用作匹配單詞開始或結(jié)束的元字符’b’在表達(dá)式中字符串中會(huì)被視為轉(zhuǎn)義一個(gè)字符‘b’,為了轉(zhuǎn)義’b’就不得不再加一個(gè)’’符號(hào)。

    也可以采用下面的方法:

    >>> re.match(r’bPy[a-z]+’,’Python’) #加字符’r’,可以保證原生字符串

    9、match()方法

    Match()方法 嘗試從字符串的起始位置匹配一個(gè)模式,如果不是起始位置匹配成功的話,match() 就返回 none。

    語法格式:

    re.match(pattern, string, [flags])

    其中,pattern表示匹配的正則表達(dá)式;string是要匹配的字符串;flags表示標(biāo)志位,用于控制正則表達(dá)式的匹配方式,如:re.I表示不區(qū)分大小寫。

    例:

    import re #導(dǎo)入re模塊

    print(re.match(‘www’, ‘www.python.org/’).span()) #span()函數(shù)可以獲取匹配的位置

    print(re.match(‘org’, ‘www.python.org’))

    輸出結(jié)果為:

    (0, 3) #在位置0到3(不包括3)匹配成功

    None #從起始位置未能匹配成功

    10、search()方法

    search()方法用于在整個(gè)字符串中搜索第一個(gè)匹配的值,如果匹配成功,則返回Match對(duì)象,否則返回None。

    語法格式:

    re.search(pattern, string, [flags])

    其中,pattern表示匹配的正則表達(dá)式;string是要匹配的字符串;flags表示標(biāo)志位,用于控制正則表達(dá)式的匹配方式,如:re.I表示不區(qū)分大小寫。

    例如:

    >>> re.search(r’Pyw+’,’It’s easy to use Python, but it’s not easy to learn Python.’)

    可以看出,目標(biāo)字符串“It’s easy to use Python, but it’s not easy to learn Python.”中一共有兩個(gè)‘Python’,search()方法可以從字符串的起始位置開始查找到‘Python’,當(dāng)找到第一個(gè)匹配值后就停止查找,返回位置信息。

    match()和search()的比較

    match()要求目標(biāo)字符串的起始位置就能匹配,search()對(duì)目標(biāo)字符串全段進(jìn)行逐次匹配,只要首次匹配成功就停止匹配。

    請(qǐng)看下例:

    >>> import re

    >>> print(re.match(r’Pyw+’,’It’s easy to use Python, but it’s not easy to learn Python.’))

    輸出結(jié)果:None

    11、findall()方法

    findall()方法用于在整個(gè)字符串中搜索所有匹配的值,如果匹配成功,則返回以匹配值為元素的列表,否則返回空列表。

    語法格式:

    re.findall(pattern, string[, flags])

    其中,pattern表示匹配的正則表達(dá)式;string是要匹配的字符串;flags表示標(biāo)志位,用于控制正則表達(dá)式的匹配方式,如:re.I表示不區(qū)分大小寫。

    例:

    >>> import re

    >>>print(re.findall(r’Pyw+’,’It’s easy to use Python, but it’s not easy to learn Python.’))

    輸出結(jié)果:[‘Python’, ‘Python’]

    可以看出,findall()的結(jié)果沒有指出匹配的具體位置。

    12、正則表達(dá)式的應(yīng)用

    字符串替換

    這里要用到sub()方法。它的語法格式如下:

    re.sub(pattern, repl, string [,count] [,flgs])

    其中,pattern是模式字符串;repl是用于替換的字符串;string是原字符串;可選參數(shù)count為模式匹配后替換的最大次數(shù),省缺表示替換所有的匹配;可選參數(shù)flags的意義與前面的方法的該參數(shù)一致。

    例:

    >>> import re

    >>> str1=’x=36.567 y=123.234′

    >>> str2=re.sub(‘.d+’,”,str1) #用空格代替小數(shù)點(diǎn)及其后的數(shù)字

    >>> print(str2)

    輸出結(jié)果:x=36 y=123

    分隔字符串

    這里要用到split()方法。它的返回值為一個(gè)列表,它的語法格式如下:

    re.split(pattern, string [,maxsplit] [,flgs])

    其中,pattern是模式字符串;string是原字符串;可選參數(shù)maxsplit為最大拆分次數(shù),省缺表示拆分所有的匹配;可選參數(shù)flags的意義與前面的方法的該參數(shù)一致。

    例:

    >>> import re

    >>> str=’白日依山盡,黃河入海流。欲窮千里目,更上一層樓!’

    >>> re.split(r’,|。|!’,str) #按照“,”、“?!?、“!”分隔字符串。

    [‘白日依山盡’, ‘黃河入海流’, ‘欲窮千里目’, ‘更上一層樓’, ”]

    注意,返回值列表中多出了一個(gè)空字符。

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    用戶投稿
    上一篇 2022年6月30日 20:09
    下一篇 2022年6月30日 20:09

    相關(guān)推薦

    • 分享4條發(fā)微商朋友圈的方法(微商朋友圈應(yīng)該怎么發(fā))

      對(duì)于微商朋友來說,朋友圈的重要性不言而喻了。 那么微商的朋友圈到底該怎么發(fā)呢? 為什么同樣是經(jīng)營(yíng)一個(gè)朋友圈,有的微商看起來逼格滿滿,實(shí)際效果也不錯(cuò);而有的卻動(dòng)都不動(dòng)就被屏蔽甚至拉黑…

      2022年11月27日
    • 存儲(chǔ)過程語法(sql server存儲(chǔ)過程語法)

      今天小編給各位分享存儲(chǔ)過程語法的知識(shí),其中也會(huì)對(duì)sql server存儲(chǔ)過程語法進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧! oracle存儲(chǔ)過程基本語法…

      2022年11月26日
    • 英雄聯(lián)盟手游好玩嗎(英雄聯(lián)盟手游好玩還是端游好玩)

      簡(jiǎn)要回答 非常好玩,英雄聯(lián)盟手游這款游戲已經(jīng)正式的進(jìn)行公測(cè),這款游戲是以5v5為模式進(jìn)行對(duì)戰(zhàn)的,它是以英雄聯(lián)盟端游為原型進(jìn)行開發(fā),里面的每一種玩法基本都沿襲了端游的特點(diǎn)。 01 這…

      2022年11月25日
    • 《寶可夢(mèng)朱紫》夢(mèng)特性怎么獲得?隱藏特性獲取方法推薦

      寶可夢(mèng)朱紫里有很多寶可夢(mèng)都是擁有夢(mèng)特性會(huì)變強(qiáng)的寶可夢(mèng),很多玩家不知道夢(mèng)特性怎么獲得,下面就給大家?guī)韺毧蓧?mèng)朱紫隱藏特性獲取方法推薦,感興趣的小伙伴一起來看看吧,希望能幫助到大家。 …

      2022年11月25日
    • 《寶可夢(mèng)朱紫》奇魯莉安怎么進(jìn)化?奇魯莉安進(jìn)化方法分享

      寶可夢(mèng)朱紫中的奇魯莉安要怎么進(jìn)化呢?很多玩家都不知道,下面就給大家?guī)韺毧蓧?mèng)朱紫奇魯莉安進(jìn)化方法分享,感興趣的小伙伴一起來看看吧,希望能幫助到大家。 奇魯莉安進(jìn)化方法分享 奇魯莉安…

      2022年11月25日
    • 《光遇》11月25日紅石在哪里 11.25紅石位置

      光遇11月25日的紅石出現(xiàn)在霞谷圓夢(mèng)村,許多小伙伴都還不知道它具體在哪,下面就讓小編來給大家介紹一下光遇11.25紅石的位置,感興趣的小伙伴快來看看吧。 光遇11.25紅石位置 1…

      2022年11月25日
    • 《光遇》11月25日季節(jié)蠟燭在哪 11.25季節(jié)蠟燭位置2022

      光遇季節(jié)蠟燭的位置每天都會(huì)變化,今天出現(xiàn)在了雨林地區(qū),下面小編就給大家?guī)砹斯庥?1.25季節(jié)蠟燭位置分享,有需要的小伙伴不要錯(cuò)過哦。 光遇11.25季節(jié)蠟燭位置2022 今日季節(jié)…

      2022年11月25日
    • 什么是推廣cpa一篇文章帶你看懂CPA推廣渠道

      CPA渠道 CPA指的是按照指定的行為結(jié)算,可以是搜索,可以是注冊(cè),可以是激活,可以是搜索下載激活,可以是綁卡,實(shí)名認(rèn)證,可以是付費(fèi),可以是瀏覽等等。甲乙雙方可以根據(jù)自己的情況來定…

      2022年11月25日
    • 《寶可夢(mèng)朱紫》樁子是什么?二級(jí)神封印樁位置一覽

      寶可夢(mèng)朱紫中有一種叫做二級(jí)神封印樁的特殊收集道具,很多玩家不知道寶可夢(mèng)朱紫樁子是什么,下面就帶來寶可夢(mèng)朱紫二級(jí)神封印樁位置一覽,感興趣的小伙伴不要錯(cuò)過,希望能幫助到大家。 二級(jí)神封…

      2022年11月24日
    • 銳龍97900x參數(shù)規(guī)格跑分評(píng)測(cè) 銳龍97900x屬于什么檔次

      銳龍9 7900X是銳龍7000系列處理器中性能頂尖的型號(hào)之一,它采用了這一代標(biāo)配的zen4架構(gòu)和5nm制程工藝,那么它具體的參數(shù)跑分如何,在電腦上世紀(jì)發(fā)揮怎么樣呢,下面就來看看銳…

      2022年11月24日

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息