溫馨提示×

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

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

關(guān)于正則表達(dá)式的5個(gè)小貼士

發(fā)布時(shí)間:2020-06-19 07:10:21 來(lái)源:網(wǎng)絡(luò) 閱讀:236 作者:Python熱愛(ài)者 欄目:編程語(yǔ)言

正則表達(dá)式是一個(gè)非常強(qiáng)大的處理字符工具,但有時(shí)可讀性很差、晦澀難懂,Jamie Zawinski 說(shuō)道:

Some people, when confronted with a problem, think, “I know, I’ll use regular expressions.” Now they have two problems.

本來(lái)是一個(gè)問(wèn)題,引入正則表達(dá)式之后就成了兩個(gè)問(wèn)題。其實(shí)并不是任何場(chǎng)景都需要正則表達(dá)式。在簡(jiǎn)單場(chǎng)景,能用字符串自己提供的方法解決問(wèn)題就沒(méi)必要用正則表達(dá)式,比如字符替換


關(guān)于正則表達(dá)式的5個(gè)小貼士

判斷字符串是否以某字符開頭


關(guān)于正則表達(dá)式的5個(gè)小貼士

re.match() 與 re.search()

re.match 從字符串的起始位置匹配,如果沒(méi)匹配成功就不再往后匹配,返回 None。而 search 雖然也是從起始位置開始匹配,但是如果在起始位置沒(méi)有匹配,就繼續(xù)往后匹配,直到匹配為止,如果匹配到字符串末尾都沒(méi)有匹配則返回 None


關(guān)于正則表達(dá)式的5個(gè)小貼士

不分組的括號(hào)

我們知道正則表達(dá)式中括號(hào)可以用于分組提取,有時(shí)我們并不希望括號(hào)用于分組該怎么辦,答案是使用 (?:),看一個(gè)例子,用正則表達(dá)式提取URL中的各個(gè)組成部分

關(guān)于正則表達(dá)式的5個(gè)小貼士

關(guān)于正則表達(dá)式的5個(gè)小貼士


關(guān)于正則表達(dá)式的5個(gè)小貼士

上面雖然寫了7對(duì)括號(hào),但其實(shí)只有5個(gè)分組。下面是不使用 ?:,出現(xiàn)了 7 組數(shù)據(jù)


關(guān)于正則表達(dá)式的5個(gè)小貼士

貪婪匹配

正則表達(dá)式默認(rèn)是貪婪匹配的,也就是說(shuō)它會(huì)在滿足匹配條件的情況下盡可能多的匹配字符,例如這里有一段話:

html ="""<div><p>Today a quick article on a nic</p><p>Read more ...</p></div>"""

里面有兩對(duì)<p>標(biāo)簽,如果你只想匹配第一對(duì),使用


關(guān)于正則表達(dá)式的5個(gè)小貼士

<p>.*</p> 會(huì)從第一個(gè)<p>開始,匹配到最后一個(gè)</p>,如果要想盡可能少匹配則可以在元字符后面加 ?


關(guān)于正則表達(dá)式的5個(gè)小貼士


向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