Python3正則表達(dá)式常用方法

前言

re.findall(),re.search()re.match()是Python正則表達(dá)式中常用的方法,re.search()re.match()類似,此次主要介紹re.findall()re.search()
re.match() 嘗試從字符串的起始位置匹配一個(gè)模式,匹配成功方法返回一個(gè)匹配的對(duì)象,否則返回None。
re.search() 掃描整個(gè)字符串并返回第一個(gè)成功的匹配,匹配成功方法返回一個(gè)匹配的對(duì)象,否則返回None。
re.findall()在字符串中找到正則表達(dá)式所匹配的所有子串,并返回一個(gè)列表,如果沒有找到匹配的,則返回空列表。
注意: match 和 search 是匹配一次, findall 匹配所有。
實(shí)例:

import re,json
dd = {
"data": {
        "XB-afea46d26a0f0b2d016a0f516710007c": [
            "17"
        ]
    },
    "url":"<html><h1>what the fuck!</h1></html>",
    "time":"243dsfaefa2019-04-03 18:12:45dafjk3k345345kadasjfk",
    "phone":"2004-959-559"
}
st = json.dumps(dd)
pattern1 = r'-[0-9]+'
print(re.search(pattern1,st).group())
print(re.findall(pattern1,st))

輸出結(jié)果

-04
['-04', '-03', '-959', '-559']

正則表達(dá)式帶有一個(gè)捕獲組

findall返回該捕獲組內(nèi)正則表達(dá)式所匹配的字符的列表,search則會(huì)匹配整個(gè)正則表達(dá)式并返回第一個(gè)
實(shí)例

import re,json
dd = {
"data": {
        "XB-afea46d26a0f0b2d016a0f516710007c": [
            "17"
        ]
    },
    "url":"<html><h1>what the fuck!</h1></html>",
    "time":"243dsfaefa2019-04-03 18:12:45dafjk3k345345kadasjfk",
    "phone":"2004-959-559"
}
st = json.dumps(dd)
pattern2 = r'-(\d+)'
print(re.search(pattern2,st))
print(re.search(pattern2,st).group(0))
print(re.search(pattern2,st).group(1))
print(re.findall(pattern2,st))

輸出

<re.Match object; span=(128, 131), match='-04'>
-04
04
['04', '03', '959', '559']

正則表達(dá)式帶有多個(gè)個(gè)捕獲組

findall返回多個(gè)捕獲組內(nèi)正則表達(dá)式所匹配的字符的元組的列表,search則會(huì)匹配整個(gè)正則表達(dá)式并返回第一個(gè)
實(shí)例

import re,json
dd = {
"data": {
        "XB-afea46d26a0f0b2d016a0f516710007c": [
            "17"
        ]
    },
    "url":"<html><h1>what the fuck!</h1></html>",
    "time":"243dsfaefa2019-04-03 18:12:45dafjk3k345345kadasjfk",
    "phone":"2004-959-559"
}
st = json.dumps(dd)
pattern3 = r'(?P<year>\d{4})-([0-9]{2})-(\d\d)'
print(re.search(pattern3,st))
print(re.search(pattern3,st).group(0))
print(re.search(pattern3,st).group('year'))
print(re.search(pattern3,st).group(2))
print(re.search(pattern3,st).group(3))
print(re.findall(pattern3,st))

結(jié)果

<re.Match object; span=(124, 134), match='2019-04-03'>
2019-04-03
2019
04
03
[('2019', '04', '03')]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容