溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python自動(dòng)化的re模塊怎么用

發(fā)布時(shí)間:2022-01-15 16:05:21 來(lái)源:億速云 閱讀:161 作者:iii 欄目:開發(fā)技術(shù)

今天小編給大家分享一下python自動(dòng)化的re模塊怎么用的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。

    一、re是什么?

    正則表達(dá)式是一個(gè)特殊的字符序列,能方便的檢查一個(gè)字符串是否與某種模式匹配。re模塊使得python擁有全部的正則表達(dá)式功能。

    二、re 模塊的作用

    通過使用正則表達(dá)式,可以:
    測(cè)試字符串內(nèi)的模式。—— 例如,可以測(cè)試輸入字符串,以查看字符串內(nèi)是否出現(xiàn)電話號(hào)碼模式或信用卡號(hào)碼模式。這稱為數(shù)據(jù)驗(yàn)證。
    替換文本。—— 可以使用正則表達(dá)式來(lái)識(shí)別文檔中的特定文本,完全刪除該文本或者用其他文本替換它。
    基于模式匹配從字符串中提取子字符串。—— 可以查找文檔內(nèi)或輸入域內(nèi)特定的文本。

    三、re模塊的使用

    1、常用方法

    • findAll(): 匹配所有的字符串,把匹配結(jié)果作為一個(gè)列表返回

    • match(): 匹配字符串的開始位置,如果開始位置沒有,則返回None

    • search():在字符串中搜索,返回搜索到的第一個(gè)

    • finditer():匹配所有的字符串,返回迭代器

    2、 元字符

    匹配任意字符(除\n以外) h. 代表匹配h后的任意一個(gè)字符

    import re
    res = 'h.'
    s = 'hello python'
    result = re.findall(res, s)
    print(result)  # ['he', 'ho']

    [] 拿[]中的人任意一個(gè)字符,去字符串中匹配,匹配到一個(gè)返回一個(gè),最后以列表返回

    import re
    res2 = '[hon]'
    s = 'hello python'
    result = re.findall(res2, s)
    print(result)  # ['h', 'o', 'h', 'o', 'n']

    \d 匹配數(shù)字0-9

    import re
    res2 = '[\d]'
    s = 'hell666o pyt999hon'
    result = re.findall(res2, s)
    print(result)  # ['6', '6', '6', '9', '9', '9']

    \D 匹配非數(shù)字, 包含空格

    import re
    res2 = '[\D]'
    s = 'hello 3334 python 88'
    result = re.findall(res2, s)
    print(result)  # ['h', 'e', 'l', 'l', 'o', ' ', ' ', 'p', 'y', 't', 'h', 'o', 'n', ' ']

    ‘\s’ 匹配空白字符

    import re
    res2 = '[\s]'
    s = 'hello 3334 python 88'
    result = re.findall(res2, s)
    print(result)  # [' ', ' ', ' ']

    ‘\S’ 匹配非空白字符

    import re
    res2 = '[\S]'
    s = 'hello 3334 python 88'
    result = re.findall(res2, s)
    print(result)  # ['h', 'e', 'l', 'l', 'o', '3', '3', '3', '4', 'p', 'y', 't', 'h', 'o', 'n', '8', '8']

    \w 匹配非特殊字符,即a-z、A-Z、0-9、_、漢字

    import re
    res2 = '[\w]'
    s = 'hello#&_ aa 8python中國(guó)'
    result = re.findall(res2, s)
    print(result)  # ['h', 'e', 'l', 'l', 'o', '_', 'a', 'a', '8', 'p', 'y', 't', 'h', 'o', 'n', '中', '國(guó)']

    \W 匹配特殊字符 ( - ~@#$&*)空格也屬于特殊字符

    import re
    res2 = '[\W]'
    s = '-hello#&_ aa 8python中國(guó)'
    result = re.findall(res2, s)
    print(result)  # ['-', '#', '&', ' ', ' ']

    3、多字符匹配

    (1)*:匹配前一個(gè)字符出現(xiàn)一次,或無(wú)限次 貪婪模式

    import reres2 = 'h*'s = '-hhello hhh python'result = re.findall(res2, s)print(result)  #['', 'hh', '', '', '', '', '', 'hhh', '', '', '', '', 'h', '', '', '']import re
    res2 = 'h*'
    s = '-hhello hhh python'
    result = re.findall(res2, s)
    print(result)  #['', 'hh', '', '', '', '', '', 'hhh', '', '', '', '', 'h', '', '', '']

    (2) + :匹配前一個(gè)字符出現(xiàn)1次或無(wú)窮次

    import re
    res2 = 'h+'
    s = '-hhello hhh python'
    result = re.findall(res2, s)
    print(result) # ['hh', 'hhh', 'h']

    (3)?: 匹配前一個(gè)字符出現(xiàn)0次或者1次,非貪婪模式

    import re
    res2 = 'h?'
    s = '-hhello hhh python'
    result = re.findall(res2, s)
    print(result) # ['', 'h', 'h', '', '', '', '', '', 'h', 'h', 'h', '', '', '', '', 'h', '', '', '']

    (4) {n} :匹配前一個(gè)字符連續(xù)出現(xiàn)n次

    import re
    res2 = 'https{2}'
    s = '-hhello-httpssss-python'
    result = re.findall(res2, s)
    print(result) # ['httpss'] 
    匹配到前一個(gè)字符s 連續(xù)出現(xiàn)2次

    {n,m} :匹配前一個(gè)字符出現(xiàn)n-m次

    import re
    res2 = 'https{1,3}'
    s = '-hhello-httpssss-python'
    result = re.findall(res2, s)
    print(result) # ['httpss']

    (5) 貪婪模式和非貪婪模式

    正則表達(dá)式通常使用于查找匹配字符串。貪婪模式,總是嘗試匹配盡可能多的字符;非貪婪模式正好相反,總是嘗試匹配盡可能少的字符。在"*","?","+","{m,n}"后面加上?,使貪婪變成非貪婪。

    (6) | :兩個(gè)條件進(jìn)行匹配,或的關(guān)系

    import re
    res2 = 'he|ll'
    s = 'hello python'
    result = re.findall(res2, s)
    print(result) # ['he', 'll']

    (7)邊界值:

    ^ :匹配以哪個(gè)字符開頭的

    import re
    res2 = '^he'
    s = 'hello python'
    result = re.findall(res2, s)
    print(result) # ['he']

    $ : 匹配以哪個(gè)字符結(jié)尾的字符

    import re
    res2 = 'on$'
    s = 'hello python'
    result = re.findall(res2, s)
    print(result) # ['on']

    4、分組匹配

    () :只匹配()里面的

    import re
    res2 = '#(\w.+?)#'
    s = "{'mobile_phone':'#mobile_phone#','pwd':'Aa123456'}"
    result = re.findall(res2, s)
    print(result)  # ['mobile_phone']

    5、match()方法的使用

    str = "www.runoob.com"
    print(re.match('www', str).span())  # 在起始位置匹配 ,返回匹配到的區(qū)間下標(biāo)  (0,3)
    print(re.match('com', str))  # 不在起始位置匹配  None

    6、 search():在字符串中搜索,返回搜索到的第一個(gè)

    str = "www.runoob.com"
    print(re.search('www', str).span())  # 在起始位置匹配 ,返回匹配到的區(qū)間下標(biāo)
    print(re.search('com', str).span())  # 不在起始位置匹配

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

    7、 finditer():

    匹配所有的字符串,返回迭代器和 findall 類似,在字符串中找到正則表達(dá)式所匹配的所有子串,并把它們作為一個(gè)迭代器返回。

    res = 'h.'
    s = 'hello python'
    result = re.finditer(res, s)
    for str in result:
        print(str.group())
    he
    ho

    以上就是“python自動(dòng)化的re模塊怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI