日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python笔记之正则表达式

發(fā)布時(shí)間:2024/1/23 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python笔记之正则表达式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

正則表達(dá)式

正則表達(dá)式(regular expression)

什么正則表達(dá)式?
我們希望只提取出我們所關(guān)注的數(shù)據(jù),此時(shí)就可以用正則表達(dá)式
正則表達(dá)式就是一種進(jìn)行數(shù)據(jù)篩選的表達(dá)式
正則表達(dá)式就是用一種特殊規(guī)則的字符串,來表達(dá)對字符串的一種過濾(稱作匹配)

什么是原子?
原子就是正則表達(dá)式的一個(gè)基本組成的單位,每個(gè)正則表達(dá)式至少要包含一個(gè)原子

  • 普通字符作為原子
    示例:
  • import re string = "http://www.baidu.com" pat = "baidu" result = re.search(pat,string) print(result)

    運(yùn)行結(jié)果:

    <_sre.SRE_Match object; span=(11, 16), match='baidu'>
  • 非打印字符作為原子
  • import re string = "abc\ndef" pat = "\n" result = re.search(pat,string) print(result)

    運(yùn)行結(jié)果:

    <_sre.SRE_Match object; span=(3, 4), match='\n'>
  • 通用字符作為原子
    \w : 匹配單字符,大小寫字母,數(shù)字,下劃線,等價(jià)于[a-zA-Z0-9]
    \W : 匹配到任何非單詞字符,等于[^a-zA-z0-9]
    \d : 匹配到一個(gè)數(shù)字字符,等價(jià)于[0-9]
    \D : 匹配到一個(gè)非數(shù)字字符等價(jià)于[^0-9]
    \s : 匹配到任何空白字符,包括空格,制表符,換頁符等等,等價(jià)于[\f\n\t\v]
    \S : 匹配到任何非空白字符,等價(jià)于[^\f\n\t\v]

    示例:

    import re string = "abcd123gdsa" pat = "\w" #匹配單字符,所以會(huì)顯示a result = re.search(pat,string) print(result)

    運(yùn)行結(jié)果:

    <_sre.SRE_Match object; span=(0, 1), match='a'>
  • 原子表(表示范圍)
    匹配大小寫字母,數(shù)字,下劃線 [a-zA-Z0-9]
    匹配數(shù)字 [0-9]
    匹配非數(shù)字 [^0-9]
    示例:
  • import re string = "as123dfzvz23cv" pat = "[123]+" result = re.search(pat,string) print(result)

    運(yùn)行結(jié)果:

    <_sre.SRE_Match object; span=(2, 5), match='123'>
  • 元字符:就是正則表達(dá)式中具有一些特殊含義的字符,比如:重復(fù)N次前面的字符
  • "." 匹配除了換行符(\n)以外的任何單個(gè)字符"^" 匹配到字符串開始的位置"$" 匹配到字符串結(jié)束的位置"*" 匹配0次,1次或者多次前面的原子 等價(jià)于{0,}"?" 匹配0次,1次 等價(jià)于{0,1}"+" 至少可以出現(xiàn)一次(1次或多次) 等價(jià)于{1,}num{n} 前面的數(shù)字至少可以出現(xiàn)幾次,具體的次數(shù)要在{}中體現(xiàn) num{n,} 前面的數(shù)字至少可以出現(xiàn)幾次num{min,max} 前面的數(shù)字最少出現(xiàn)min次,最多出現(xiàn)max次 t|s 匹配t|s() 模式單元,用于提取某一個(gè)內(nèi)容
  • 模式修改符
    在不改變正則表達(dá)式的情況下,通過模式修正符來改變正則表達(dá)式的含義從而實(shí)現(xiàn)匹配結(jié)果的調(diào)整
    I 匹配時(shí)忽略大小寫
    N 多行匹配
    L 本地化識(shí)別匹配
    S 讓”.”匹配換行符
    示例:
  • import re string = "adfpythonsns" pat = "Python" result = re.search(pat,string,re.I) print(result)

    運(yùn)行結(jié)果:

    <_sre.SRE_Match object; span=(3, 9), match='python'>

    7.貪婪模式和懶惰模式
    貪婪就是盡可能多去匹配
    懶惰盡可能少的去匹配
    貪婪模式示例:

    import re string = "faffafpythonsadfapy" pat = "p.*y" result = re.search(pat,string) print(result)

    運(yùn)行結(jié)果:

    <_sre.SRE_Match object; span=(6, 19), match='pythonsadfapy'>

    懶惰模式示例:

    import re string = "faffafpythonsadfapy" pat = "p.*?y" result = re.search(pat,string) print(result)

    運(yùn)行結(jié)果:

    <_sre.SRE_Match object; span=(6, 8), match='py'>

    正則表達(dá)式函數(shù)

    re.search()

    掃描整個(gè)字符串并返回第一個(gè)成功的匹配,存在多個(gè)也只會(huì)返回一個(gè)

    re.match()

    嘗試從字符串的起始位置匹配,如果不是起始位置的話,match()就返回None

    import re print(re.match("www","www.baidu.com")) #匹配成功 print(re.match("com","www.baidu.com")) #匹配失敗

    運(yùn)行結(jié)果:

    <_sre.SRE_Match object; span=(0, 3), match='www'> None
    re.search()和re.match()的區(qū)別:

    re.match() 只匹配字符串的開始,如果開始就不符合規(guī)則,則匹配失敗,返回None
    re.search() 匹配整個(gè)字符串,直到一個(gè)成功的匹配

    re.sub()

    檢索和替換

    語法: re.sub(pattern,repl,string)re.sub(正則表達(dá)式,替換字符,被替換的字符串)-patten 規(guī)則 -repl 替換的字符 -string 原始字符串 -count 模式匹配后替換的最大次數(shù),默認(rèn)0表示替換所有匹配的值

    示例:

    import re phone = "123-343-5553 # 這是個(gè)電話號碼"#刪除注釋 # num = re.sub("#.*$","",phone) num = re.sub("\D","",phone) print(num)

    運(yùn)行結(jié)果:

    1233435553

    全局匹配函數(shù)

    re.compile(Pattern) –
    用于編譯正則表達(dá)式,生成一個(gè)正則表達(dá)式對象供match() , search() 這兩個(gè)函數(shù)來使用
    示例,

    import re pattern = re.compile(r"\d+") resultp = pattern.findall("runoob 123 google 456") #以列表形式返回 print(resultp)

    運(yùn)行結(jié)果:

    ['123', '456']

    總結(jié)

    以上是生活随笔為你收集整理的python笔记之正则表达式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。