日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

中國最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2

python教程

  • Python 入門教程
  • Python 基礎(chǔ)教程

    Python 高級(jí)教程

    Python 常用資源

    Python 拓展閱讀

    Python正則表達(dá)式

    閱讀 (2261)

    Python正則表達(dá)式

    正則表達(dá)式是一個(gè)特殊的字符序列,它能幫助你方便的檢查一個(gè)字符串是否與某種模式匹配。Python 自1.5版本起增加了re 模塊,它提供 Perl 風(fēng)格的正則表達(dá)式模式。

    re 模塊使 Python 語言擁有全部的正則表達(dá)式功能。

    compile 函數(shù)根據(jù)一個(gè)模式字符串和可選的標(biāo)志參數(shù)生成一個(gè)正則表達(dá)式對(duì)象。該對(duì)象擁有一系列方法用于正則表達(dá)式匹配和替換。

    re 模塊也提供了與這些方法功能完全一致的函數(shù),這些函數(shù)使用一個(gè)模式字符串做為它們的第一個(gè)參數(shù)。

    本章節(jié)主要介紹Python中常用的正則表達(dá)式處理函數(shù)。


    re.match函數(shù)

    re.match 嘗試從字符串的開始匹配一個(gè)模式。

    函數(shù)語法

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

    函數(shù)參數(shù)說明:

    參數(shù)描述
    pattern匹配的正則表達(dá)式
    string要匹配的字符串。
    flags標(biāo)志位,用于控制正則表達(dá)式的匹配方式,如:是否區(qū)分大小寫,多行匹配等等。

    匹配成功re.match方法返回一個(gè)匹配的對(duì)象,否則返回None。

    我們可以使用group(num) 或 groups() 匹配對(duì)象函數(shù)來獲取匹配表達(dá)式。

    匹配對(duì)象方法描述
    group(num=0)匹配的整個(gè)表達(dá)式的字符串,group() 可以一次輸入多個(gè)組號(hào),在這種情況下它將返回一個(gè)包含那些組所對(duì)應(yīng)值的元組。
    groups()返回一個(gè)包含所有小組字符串的元組,從 1 到 所含的小組號(hào)。

    實(shí)例:

    #!/usr/bin/python
    import re
    
    line = "Cats are smarter than dogs"
    
    matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)
    
    if matchObj:
       print "matchObj.group() : ", matchObj.group()
       print "matchObj.group(1) : ", matchObj.group(1)
       print "matchObj.group(2) : ", matchObj.group(2)
    else:
       print "No match!!"
    

    以上實(shí)例執(zhí)行結(jié)果如下:

    matchObj.group() :  Cats are smarter than dogs
    matchObj.group(1) :  Cats
    matchObj.group(2) :  smarter
    

    re.search方法

    re.search 會(huì)在字符串內(nèi)查找模式匹配,直到找到第一個(gè)匹配。

    函數(shù)語法:

    re.search(pattern, string, flags=0)
    

    函數(shù)參數(shù)說明:

    參數(shù)描述
    pattern匹配的正則表達(dá)式
    string要匹配的字符串。
    flags標(biāo)志位,用于控制正則表達(dá)式的匹配方式,如:是否區(qū)分大小寫,多行匹配等等。

    匹配成功re.search方法返回一個(gè)匹配的對(duì)象,否則返回None。

    我們可以使用group(num) 或 groups() 匹配對(duì)象函數(shù)來獲取匹配表達(dá)式。

    匹配對(duì)象方法描述
    group(num=0)匹配的整個(gè)表達(dá)式的字符串,group() 可以一次輸入多個(gè)組號(hào),在這種情況下它將返回一個(gè)包含那些組所對(duì)應(yīng)值的元組。
    groups()返回一個(gè)包含所有小組字符串的元組,從 1 到 所含的小組號(hào)。

    實(shí)例:

    #!/usr/bin/python
    import re
    
    line = "Cats are smarter than dogs";
    
    matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)
    
    if matchObj:
       print "matchObj.group() : ", matchObj.group()
       print "matchObj.group(1) : ", matchObj.group(1)
       print "matchObj.group(2) : ", matchObj.group(2)
    else:
       print "No match!!"
    
    以上實(shí)例執(zhí)行結(jié)果如下:
    matchObj.group() :  Cats are smarter than dogs
    matchObj.group(1) :  Cats
    matchObj.group(2) :  smarter
    

    re.match與re.search的區(qū)別

    re.match只匹配字符串的開始,如果字符串開始不符合正則表達(dá)式,則匹配失敗,函數(shù)返回None;而re.search匹配整個(gè)字符串,直到找到一個(gè)匹配。

    實(shí)例:

    #!/usr/bin/python
    import re
    
    line = "Cats are smarter than dogs";
    
    matchObj = re.match( r'dogs', line, re.M|re.I)
    if matchObj:
       print "match --> matchObj.group() : ", matchObj.group()
    else:
       print "No match!!"
    
    matchObj = re.search( r'dogs', line, re.M|re.I)
    if matchObj:
       print "search --> matchObj.group() : ", matchObj.group()
    else:
       print "No match!!"
    
    以上實(shí)例運(yùn)行結(jié)果如下:
    No match!!
    search --> matchObj.group() :  dogs
    

    檢索和替換

    Python 的re模塊提供了re.sub用于替換字符串中的匹配項(xiàng)。

    語法:

    re.sub(pattern, repl, string, max=0)
    

    返回的字符串是在字符串中用 RE 最左邊不重復(fù)的匹配來替換。如果模式?jīng)]有發(fā)現(xiàn),字符將被沒有改變地返回。

    可選參數(shù) count 是模式匹配后替換的最大次數(shù);count 必須是非負(fù)整數(shù)。缺省值是 0 表示替換所有的匹配。

    實(shí)例:

    #!/usr/bin/python
    import re
    
    phone = "2004-959-559 # This is Phone Number"
    
    # Delete Python-style comments
    num = re.sub(r'#.*$', "", phone)
    print "Phone Num : ", num
    
    # Remove anything other than digits
    num = re.sub(r'\D', "", phone)    
    print "Phone Num : ", num
    
    以上實(shí)例執(zhí)行結(jié)果如下:
    Phone Num :  2004-959-559
    Phone Num :  2004959559
    

    正則表達(dá)式修飾符 - 可選標(biāo)志

    正則表達(dá)式可以包含一些可選標(biāo)志修飾符來控制匹配的模式。修飾符被指定為一個(gè)可選的標(biāo)志。多個(gè)標(biāo)志可以通過按位 OR(|) 它們來指定。如 re.I | re.M 被設(shè)置成 I 和 M 標(biāo)志:

    修飾符描述
    re.I使匹配對(duì)大小寫不敏感
    re.L做本地化識(shí)別(locale-aware)匹配
    re.M多行匹配,影響 ^ 和 $
    re.S使 . 匹配包括換行在內(nèi)的所有字符
    re.U根據(jù)Unicode字符集解析字符。這個(gè)標(biāo)志影響 \w, \W, \b, \B.
    re.X該標(biāo)志通過給予你更靈活的格式以便你將正則表達(dá)式寫得更易于理解。

    正則表達(dá)式模式

    模式字符串使用特殊的語法來表示一個(gè)正則表達(dá)式:

    字母和數(shù)字表示他們自身。一個(gè)正則表達(dá)式模式中的字母和數(shù)字匹配同樣的字符串。

    多數(shù)字母和數(shù)字前加一個(gè)反斜杠時(shí)會(huì)擁有不同的含義。

    標(biāo)點(diǎn)符號(hào)只有被轉(zhuǎn)義時(shí)才匹配自身,否則它們表示特殊的含義。

    反斜杠本身需要使用反斜杠轉(zhuǎn)義。

    由于正則表達(dá)式通常都包含反斜杠,所以你最好使用原始字符串來表示它們。模式元素(如 r'/t',等價(jià)于'//t')匹配相應(yīng)的特殊字符。

    下表列出了正則表達(dá)式模式語法中的特殊元素。如果你使用模式的同時(shí)提供了可選的標(biāo)志參數(shù),某些模式元素的含義會(huì)改變。

    模式描述
    ^匹配字符串的開頭
    $匹配字符串的末尾。
    .匹配任意字符,除了換行符,當(dāng)re.DOTALL標(biāo)記被指定時(shí),則可以匹配包括換行符的任意字符。
    [...]用來表示一組字符,單獨(dú)列出:[amk] 匹配 'a','m'或'k'
    [^...]不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。
    re*匹配0個(gè)或多個(gè)的表達(dá)式。
    re+匹配1個(gè)或多個(gè)的表達(dá)式。
    re? 匹配0個(gè)或1個(gè)由前面的正則表達(dá)式定義的片段,非貪婪方式
    re{ n}
    re{ n,}精確匹配n個(gè)前面表達(dá)式。
    re{ n, m}匹配 n 到 m 次由前面的正則表達(dá)式定義的片段,貪婪方式
    a| b匹配a或b
    (re)G匹配括號(hào)內(nèi)的表達(dá)式,也表示一個(gè)組
    (?imx)正則表達(dá)式包含三種可選標(biāo)志:i, m, 或 x 。只影響括號(hào)中的區(qū)域。
    (?-imx)正則表達(dá)式關(guān)閉 i, m, 或 x 可選標(biāo)志。只影響括號(hào)中的區(qū)域。
    (?: re) 類似 (...), 但是不表示一個(gè)組
    (?imx: re)在括號(hào)中使用i, m, 或 x 可選標(biāo)志
    (?-imx: re)在括號(hào)中不使用i, m, 或 x 可選標(biāo)志
    (?#...)注釋.
    (?= re)前向肯定界定符。如果所含正則表達(dá)式,以 ... 表示,在當(dāng)前位置成功匹配時(shí)成功,否則失敗。但一旦所含表達(dá)式已經(jīng)嘗試,匹配引擎根本沒有提高;模式的剩余部分還要嘗試界定符的右邊。
    (?! re)前向否定界定符。與肯定界定符相反;當(dāng)所含表達(dá)式不能在字符串當(dāng)前位置匹配時(shí)成功
    (?> re)匹配的獨(dú)立模式,省去回溯。
    \w 匹配字母數(shù)字
    \W匹配非字母數(shù)字
    \s 匹配任意空白字符,等價(jià)于 [\t\n\r\f].
    \S匹配任意非空字符
    \d 匹配任意數(shù)字,等價(jià)于 [0-9].
    \D匹配任意非數(shù)字
    \A匹配字符串開始
    \Z匹配字符串結(jié)束,如果是存在換行,只匹配到換行前的結(jié)束字符串。c
    \z匹配字符串結(jié)束
    \G匹配最后匹配完成的位置。
    \b匹配一個(gè)單詞邊界,也就是指單詞和空格間的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。
    \B匹配非單詞邊界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。
    \n, \t, 等.匹配一個(gè)換行符。匹配一個(gè)制表符。等
    \1...\9匹配第n個(gè)分組的子表達(dá)式。
    \10匹配第n個(gè)分組的子表達(dá)式,如果它經(jīng)匹配。否則指的是八進(jìn)制字符碼的表達(dá)式。

    正則表達(dá)式實(shí)例

    字符匹配

    實(shí)例描述
    python匹配 "python".

    字符類

    實(shí)例描述
    [Pp]ython 匹配 "Python" 或 "python"
    rub[ye]匹配 "ruby" 或 "rube"
    [aeiou]匹配中括號(hào)內(nèi)的任意一個(gè)字母
    [0-9]匹配任何數(shù)字。類似于 [0123456789]
    [a-z]匹配任何小寫字母
    [A-Z]匹配任何大寫字母
    [a-zA-Z0-9]匹配任何字母及數(shù)字
    [^aeiou]除了aeiou字母以外的所有字符
    [^0-9]匹配除了數(shù)字外的字符

    特殊字符類

    實(shí)例描述
    .匹配除 "\n" 之外的任何單個(gè)字符。要匹配包括 '\n' 在內(nèi)的任何字符,請(qǐng)使用象 '[.\n]' 的模式。
    \d匹配一個(gè)數(shù)字字符。等價(jià)于 [0-9]。
    \D 匹配一個(gè)非數(shù)字字符。等價(jià)于 [^0-9]。
    \s匹配任何空白字符,包括空格、制表符、換頁符等等。等價(jià)于 [ \f\n\r\t\v]。
    \S 匹配任何非空白字符。等價(jià)于 [^ \f\n\r\t\v]。
    \w匹配包括下劃線的任何單詞字符。等價(jià)于'[A-Za-z0-9_]'。
    \W匹配任何非單詞字符。等價(jià)于 '[^A-Za-z0-9_]'。
    關(guān)閉
    程序員人生
    主站蜘蛛池模板: 亚洲精品高清在线 | 黄色三级av | 一区在线观看视频 | 国内在线视频 | 日韩激情网 | 国产精选久久久 | 免费日韩电影 | se94se亚洲精品setu | 国产精品免费网站 | 国产91精品久久久久久久网曝门 | 国产激情美女久久久久久吹潮 | 欧美一区二区久久 | 中文字幕日本视频 | 黄色av地址 | 国产精品乱码一区二区三区 | 精品久久中文字幕97 | 久久高清免费 | 在线观看1区 | 91在线导航| 国产精品国产精品国产专区不卡 | 日本黄色电影网址 | 欧美a性 | 国产精品网站在线 | 久久精品亚洲一区二区三区浴池 | 欧洲成人午夜免费大片 | 国产精品一区二区三区在线 | 午夜精品在线 | 国产一区二区在线播放 | 欧美一区二区三区在线观看 | 精品久久精品 | 91麻豆产精品久久久久久 | 婷婷六月丁 | 精一区二区三区 | 中文字幕国产日韩 | 99久久精品免费看国产四区 | 亚洲性网| 日本一级在线观看 | 一区二区在线视频观看 | 国产亚洲视频在线观看 | 国产黄| 免费毛片在线 |