首頁  >  文章  >  後端開發  >  python正規表示式如何實現重疊匹配

python正規表示式如何實現重疊匹配

WBOY
WBOY轉載
2022-07-25 17:20:443201瀏覽

本篇文章為大家帶來了關於Python的相關知識,主要介紹了python 正則表達式如何實現重疊匹配,具有很好的參考價值,下面一起來看一下,希望對大家有幫助。

python正規表示式如何實現重疊匹配

【相關推薦:Python3影片教學

正規表示式實作重疊符合

import regex
string = '100101010001'
str_re = '101'
print(regex.findall(str_re, string, overlapped=True))

#普通的re庫匹配,只能匹配一個'101'。

正規表示式與正規表示式符合

正規表示式

正規表示式可理解為資料篩選的表達式,是有限個原子和元字元組成。

原子:基本組成單位,每個表達式至少有一個原子

#通用字元組成原子原子表組成原子
#普通字符组成原子
pat1 = "abcd"
 
#非打印字符组成原子
pat2 = "\n"
 
#通用字符做原子
pat3 = "\w"
 
#原子表组成原子
pat4 = "py[abc]"
#可以匹配pya,pyb,pyc,但匹配pyab等原子表重复出现的情况失败
 
#原子表开头带 ^ 表示取反
pat5 = "py[^abc]"
#第三个位置匹配除了a,b,c外的任意一个字符
普通字元組成原子

非列印字元組成原子

(不印在輸出台的字元)

##\n :換行

\t:tab退格符號

\w:符合任意字母、數字、底線

\W:與\w相反

\d:符合任十進制數

\D:與\d相反

\s :符合任意空白字符,如空格、換行、縮排

\S:與\s相反

一組原子組成一個表,由[]宣告

表內原子優先權相等,但內容只出現依序

若原子表以^ 開頭,則表示取反

#元字元:正規表示式中具有特殊意義的字元

.匹配任意字符,除了換行符^匹配字串開始的位置#$符合字串結束的位置,當出現多組符合的符合時,傳回字串最後的那組符合##*#?{ j }{ j , }{ j , k }i | j( )
匹配0,1,n 次前面的原子【貪婪模式:盡可能多的匹配】
匹配0,1 次前面的原子【懶惰模式:精確匹配】
符合1,n 次前面的原子
前面的原子出現j 次
#前面的原子至少出現j 次
前面的原子至少出現j 次,至多出現k 次
符合i 或j ,若i 與j 同時出現,匹配i
組,限制這組資料的組合如()內所描述一樣,只傳回符合括號內描述的內容
模式修正符

#即函數中flag 位置的參數,在不改變正規表示式的情況下改變其意義,調整配對結果。

re.Ire.M#多行匹配re.L本地化識別匹配#re.Ure.S
##根據unicon字元匹配,影響\w \W
#符合包含換行符


    正規匹配
正規表示式是對字串進行模糊匹配,其中一個應用為正規匹配。正規匹配是python爬蟲的使用技術,用於在爬取的文字資訊中提取目標資訊。
  • 正規符合常用的函數:(呼叫正規表示式模組re)
  • #re.search(pat, str[, flag]) :掃描字串str,傳回pat的位置(第一次成功匹配的),flag用於控制正規表示式的匹配方式
  • import re
    str = 'python'
    pat = 'pytho[a-n]'
    print(re.search(pat, str))
  • re. match(pat, str[, flag])
  • :掃描字串str開始的位置,傳回pat的位置(第一次成功符合的),flag用來控制正規表示式的符合方式【若開始就不符合則結束,回傳none】
  • <pre class="brush:py;">import re str_1 = &amp;#39;hello world&amp;#39; str_2 = &amp;#39;world hello&amp;#39; pat = &amp;#39;world&amp;#39; print(re.match(pat, str_1)) print(re.match(pat, str_2))</pre>
re.complie(pat[, flag])
    :編譯正規表示式pat,傳回正規表示式物件
  • findall(str[, pos[, endpos]])
  • :符合所有,用清單傳回string中所有符合的子字串【不只第一次】,pos和endpos可指定在string中的起始位置

re.complie(pat).findall(str):全域匹配函數,符合str中所有符合pat的子字串,裝入一個列表回傳結果

###
import re
str = "hello world hello world hello world"
pat = "hello"
print(re.complie(pat).findall(str))
print(re.complie(pat).findall(str, 5, 15))
#########re.sub(pat, repl, str[, count[, flag]])###:替換字串中的符合項目【清洗資料】,可用count指定最大替換次數######
import re
str = "400-823-823"
pat = "-"
#短横改空格,最大替换次数2
str_new = re.sub(pat, " ", str, count=2)
###【相關推薦:###Python3影片教學### 】###

以上是python正規表示式如何實現重疊匹配的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:jb51.net。如有侵權,請聯絡admin@php.cn刪除