人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動(dòng)態(tài)

Python3正則表達(dá)式之:(?(id/name)yes-pattern|no-pattern)條件性匹配

發(fā)布日期:2021-12-28 10:08 | 文章來(lái)源:源碼中國(guó)

1. 用途

(?(id/name)yes-pattern|no-pattern)的作用是:

對(duì)于給出的id或者name,先嘗試去匹配 yes-pattern部分的內(nèi)容;

如果idname條件不滿(mǎn)足,則去匹配no-pattern部分的內(nèi)容;

這句話聽(tīng)著還是很拗口的,或者說(shuō)一下子還是很難懂的。

2. 參數(shù)含義

此處的name或id,是針對(duì)(當(dāng)前位置的)條件性匹配之前的,某個(gè)已經(jīng)通過(guò)group去分組的內(nèi)容

name: 如果是有命名的分組,即named group,則對(duì)應(yīng)的該分組就有對(duì)應(yīng)的name,即此處所指的就是對(duì)應(yīng)的name;

id: 如果是無(wú)命名的分組,即unnamed group,則對(duì)應(yīng)的該分組也有對(duì)應(yīng)的分組的編號(hào),稱(chēng)為group的number,也叫做id,對(duì)應(yīng)的就是這里的id;

yes-pattern: 如果前面的group匹配成功,則此處,就執(zhí)行yes-pattern的匹配;

no-pattern: 如果前面group匹配不成功,即沒(méi)有找到符合該的group內(nèi)容,則就匹配no-pattern;

注意: 上面的yes-patternno-pattern,都是普通的正則表達(dá)式,用來(lái)匹配所需的內(nèi)容。

3. 語(yǔ)法

如果存在no-pattern,則前面要有個(gè)豎杠'|',用來(lái)分隔yes-patternno-pattern

如果不想匹配no-pattern的部分,則可以連同'|'一起不寫(xiě)。

實(shí)例:

>>> re.search(r'(\d+)?(?(1)\w+|jb51\.\w+)', 'jb51.com')>>> re.search(r'(\d+)?(?(1)\w+)', '100jb51')

其中的?(1)代表序號(hào)為1的group, 也就是上面(\d+), 第二個(gè)表達(dá)式中就沒(méi)有使用no-pattern

4. 用法詳解

還是上面的例子, 我們變換一下, 用實(shí)例探索它們的詳細(xì)用法及技巧

4.1 把(\d+)后面的問(wèn)號(hào)去掉, 也就是說(shuō)必須存在group 1,不是可有可無(wú)

執(zhí)行:

>>> re.search(r'(\d+)(?(1)\w+|jb51\.\w+)', 'jb51.com')
>>>

整體規(guī)則匹配失敗,返回為空,no-pattern部分并沒(méi)有按照預(yù)想執(zhí)行。

 4.2 改一下匹配字符串

>>> re.search(r'(\d+)(?(1)\w+|jb51\.\w+)', '1jb51.com')

可以匹配到, group1和yes部分都匹配到了

 4.3 group可有可無(wú)的情況(group后增加問(wèn)號(hào))

>>> re.search(r'(\d+)?(?(1)\w+|jb51\.\w+)', 'jb51')
>>>

如果group沒(méi)有匹配到,且它可有可無(wú), 那么group會(huì)被認(rèn)為匹配不成功,繼續(xù)執(zhí)行no-pattern部分匹配

 4.4 只匹配group 1 部分, yes部分沒(méi)有匹配

>>> re.search(r'(\d+)(?(1)\w+|jb51\.\w+)', '1000')

只匹配group 1 部分, yes部分沒(méi)有匹配,也是有匹配結(jié)果的, 那說(shuō)明yes-pattern和no-pattern不一定必須匹配成功

5.結(jié)論

1. 通過(guò)4.1 4.2  4.3 對(duì)比可以發(fā)現(xiàn):

當(dāng)該特殊規(guī)則中的作為判斷條件的組本身不允許為空的時(shí)候,在該組對(duì)目標(biāo)字符串匹配為空的情況下,整體規(guī)則匹配失敗,所以后面的作為整體一部分的特殊規(guī)則自然也就無(wú)效了。所以要想特殊規(guī)則的no-pattern生效,必須判斷條件對(duì)應(yīng)組匹配數(shù)可以為0。

2. 通過(guò)4.4可知:可以?xún)H匹配group部分, 如果yes-patternno-pattern沒(méi)有匹配到, 則會(huì)僅輸出group匹配的內(nèi)容

更多關(guān)于Python3正則表達(dá)式的相關(guān)教程請(qǐng)查看下面的相關(guān)鏈接

版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開(kāi)通

自選配置、實(shí)時(shí)開(kāi)通

免備案

全球線路精選!

全天候客戶(hù)服務(wù)

7x24全年不間斷在線

專(zhuān)屬顧問(wèn)服務(wù)

1對(duì)1客戶(hù)咨詢(xún)顧問(wèn)

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部