python正則表達(dá)式之對號入座篇
一、定義
正則表達(dá)式是對字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規(guī)則字符串”,這個“規(guī)則字符串”用來表達(dá)對字符串的一種過濾邏輯。如果找到了符合這樣一種規(guī)則的字符串,我們就說匹配上了,否則匹配失敗。
二、匹配規(guī)則
1.語法規(guī)則
2.相關(guān)注解
a.反斜杠問題
假如你需要匹配文本中的字符"\",那么使用編程語言表示的正則表達(dá)式里將需要4個反斜杠"\\\\":前兩個和后兩個分別用于在編程語言里轉(zhuǎn)義成反斜杠,轉(zhuǎn)換成兩個反斜杠后再在正則表達(dá)式里轉(zhuǎn)義成一個反斜杠。其匹配過程如下:
字符 | 匹配過程 |
\\\\abc | 為字符串實(shí)值取消反斜杠轉(zhuǎn)義 |
\\abc | 為re.compile()取消反斜杠轉(zhuǎn)義 |
\abc | 欲匹配的目標(biāo)字符串 |
為了解決輸入四個“\”的麻煩,我們可以使用python里的原生字符串(raw string),即在字符串前面加上r。如下:
import re print(re.search(r"\\abc","123\\abc"))
從上面可知,使用原生字符串就省去了從字符串實(shí)值到re編譯器的字符串轉(zhuǎn)義過程,而編譯器編譯的時候仍然要轉(zhuǎn)義。
b.貪婪匹配與非貪婪匹配
貪婪匹配:正則表達(dá)式一般趨向于最大長度匹配,也就是所謂的貪婪匹配。如:
import re print(re.match("ab.*c","abcdfghc"))
匹配的結(jié)果為整個字符串。而非貪婪匹配就是匹配到結(jié)果就好,最少地匹配字符。python默認(rèn)是貪婪模式;在量詞后面直接加上一個問號?就是非貪婪模式。
import re print(re.match("ab.*?c","abcdfghc"))
這樣匹配的結(jié)果就是“abc”。
三、模塊和函數(shù)
re模塊
compile()編譯語法規(guī)則
match() 從字符串開頭位置開始匹配
search() 從字符串任意位置匹配到第一個符合規(guī)則的字符串
findall 以列表形式返回所有匹配到的字符串
finditer 以迭代器形式返回所有匹配到的字符串
split() 拆分字符串
group() 獲取匹配到的字符串的分組信息
四、特殊構(gòu)造的規(guī)則
總結(jié)
以上所述是小編給大家介紹的python正則表達(dá)式之對號入座篇,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
pyppeteer執(zhí)行js繞過webdriver監(jiān)測方法上
這篇文章主要為大家介紹了pyppeteer執(zhí)行js繞過webdriver監(jiān)測方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04用Python監(jiān)控NASA TV直播畫面的實(shí)現(xiàn)步驟
本文分享一個名為"Spacestills"的開源程序,它可以用于查看 NASA TV 的直播畫面(靜止幀)2021-05-05基于Python寫個"點(diǎn)球大戰(zhàn)"小游戲
這篇文章主要為大家詳細(xì)介紹了如何利用Python寫個簡單的"點(diǎn)球大戰(zhàn)"小游戲,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-12-12Python之tkinter進(jìn)度條Progressbar用法解讀
這篇文章主要介紹了Python之tkinter進(jìn)度條Progressbar用法解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05