溫馨提示×

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

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

python正則表達(dá)式之對(duì)號(hào)入座篇

發(fā)布時(shí)間:2020-10-18 13:49:48 來(lái)源:腳本之家 閱讀:151 作者:manbayiout 欄目:開發(fā)技術(shù)

一、定義

正則表達(dá)式是對(duì)字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個(gè)“規(guī)則字符串”,這個(gè)“規(guī)則字符串”用來(lái)表達(dá)對(duì)字符串的一種過(guò)濾邏輯。如果找到了符合這樣一種規(guī)則的字符串,我們就說(shuō)匹配上了,否則匹配失敗。

二、匹配規(guī)則

1.語(yǔ)法規(guī)則

python正則表達(dá)式之對(duì)號(hào)入座篇 

2.相關(guān)注解

a.反斜杠問(wèn)題

假如你需要匹配文本中的字符"\",那么使用編程語(yǔ)言表示的正則表達(dá)式里將需要4個(gè)反斜杠"\\\\":前兩個(gè)和后兩個(gè)分別用于在編程語(yǔ)言里轉(zhuǎn)義成反斜杠,轉(zhuǎn)換成兩個(gè)反斜杠后再在正則表達(dá)式里轉(zhuǎn)義成一個(gè)反斜杠。其匹配過(guò)程如下:

字符 匹配過(guò)程
\\\\abc 為字符串實(shí)值取消反斜杠轉(zhuǎn)義
\\abc 為re.compile()取消反斜杠轉(zhuǎn)義
\abc 欲匹配的目標(biāo)字符串

為了解決輸入四個(gè)“\”的麻煩,我們可以使用python里的原生字符串(raw string),即在字符串前面加上r。如下:

import re 
 print(re.search(r"\\abc","123\\abc"))

從上面可知,使用原生字符串就省去了從字符串實(shí)值到re編譯器的字符串轉(zhuǎn)義過(guò)程,而編譯器編譯的時(shí)候仍然要轉(zhuǎn)義。

b.貪婪匹配與非貪婪匹配

貪婪匹配:正則表達(dá)式一般趨向于最大長(zhǎng)度匹配,也就是所謂的貪婪匹配。如:

 import re
print(re.match("ab.*c","abcdfghc"))

匹配的結(jié)果為整個(gè)字符串。而非貪婪匹配就是匹配到結(jié)果就好,最少地匹配字符。python默認(rèn)是貪婪模式;在量詞后面直接加上一個(gè)問(wèn)號(hào)?就是非貪婪模式。

 import re
 print(re.match("ab.*?c","abcdfghc"))

這樣匹配的結(jié)果就是“abc”。

三、模塊和函數(shù)

re模塊

compile()編譯語(yǔ)法規(guī)則

match()  從字符串開頭位置開始匹配

search() 從字符串任意位置匹配到第一個(gè)符合規(guī)則的字符串

findall  以列表形式返回所有匹配到的字符串

finditer               以迭代器形式返回所有匹配到的字符串

split()  拆分字符串

group()   獲取匹配到的字符串的分組信息

四、特殊構(gòu)造的規(guī)則

python正則表達(dá)式之對(duì)號(hào)入座篇 

總結(jié)

以上所述是小編給大家介紹的python正則表達(dá)式之對(duì)號(hào)入座篇,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)億速云網(wǎng)站的支持!

向AI問(wèn)一下細(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