亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2021年10月06日 15:33:27   投稿:wdc  
(?(id/name)yes-pattern|no-pattern)的作用是對于給出的id或者name,先嘗試去匹配 yes-pattern部分的內(nèi)容,如果id或name條件不滿足,則去匹配no-pattern部分的內(nèi)容

1. 用途

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

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

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

這句話聽著還是很拗口的,或者說一下子還是很難懂的。

2. 參數(shù)含義

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

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

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

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

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

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

3. 語法

如果存在no-pattern,則前面要有個豎杠'|',用來分隔yes-patternno-pattern

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

實例:

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

其中的?(1)代表序號為1的group, 也就是上面(\d+), 第二個表達式中就沒有使用no-pattern

4. 用法詳解

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

4.1 把(\d+)后面的問號去掉, 也就是說必須存在group 1,不是可有可無

執(zhí)行:

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

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

 4.2 改一下匹配字符串

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

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

 4.3 group可有可無的情況(group后增加問號)

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

如果group沒有匹配到,且它可有可無, 那么group會被認為匹配不成功,繼續(xù)執(zhí)行no-pattern部分匹配

 4.4 只匹配group 1 部分, yes部分沒有匹配

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

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

5.結(jié)論

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

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

2. 通過4.4可知:可以僅匹配group部分, 如果yes-patternno-pattern沒有匹配到, 則會僅輸出group匹配的內(nèi)容

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

相關(guān)文章

  • python廣度搜索解決八數(shù)碼難題

    python廣度搜索解決八數(shù)碼難題

    這篇文章主要介紹了python廣度搜索解決八數(shù)碼難題。想了解算法和數(shù)據(jù)結(jié)構(gòu)的同學,一定要看一下
    2021-04-04
  • springboot aop方式實現(xiàn)接口入?yún)⑿r灥氖纠a

    springboot aop方式實現(xiàn)接口入?yún)⑿r灥氖纠a

    在實際開發(fā)項目中,我們常常需要對接口入?yún)⑦M行校驗,本文主要介紹了springboot aop方式實現(xiàn)接口入?yún)⑿r灥氖纠a,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • Python爬取知乎圖片代碼實現(xiàn)解析

    Python爬取知乎圖片代碼實現(xiàn)解析

    這篇文章主要介紹了Python爬取知乎圖片代碼實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • 基于python實現(xiàn)cdn日志文件導(dǎo)入mysql進行分析

    基于python實現(xiàn)cdn日志文件導(dǎo)入mysql進行分析

    這篇文章主要介紹了基于python實現(xiàn)cdn日志文件導(dǎo)入mysql進行分析,本文以阿里云CDN日志作為輔助查詢數(shù)據(jù)展開主題內(nèi)容,其它云平臺大同小異,需要的小伙伴可以參考一下
    2022-05-05
  • 解決keras模型保存h5文件提示無此目錄問題

    解決keras模型保存h5文件提示無此目錄問題

    這篇文章主要介紹了解決keras模型保存h5文件提示無此目錄問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • python中reload重載實例用法

    python中reload重載實例用法

    在本篇文章里小編給大家整理的是一篇關(guān)于python中reload重載實例用法相關(guān)知識點,有興趣的朋友們可以參考下。
    2020-12-12
  • django連接數(shù)據(jù)庫獲取數(shù)據(jù)的簡單步驟記錄

    django連接數(shù)據(jù)庫獲取數(shù)據(jù)的簡單步驟記錄

    數(shù)據(jù)庫中各種表結(jié)構(gòu)已經(jīng)創(chuàng)建好了,甚至連數(shù)據(jù)都有了,此時我要用Django管理這個數(shù)據(jù)庫,下面這篇文章主要給大家介紹了關(guān)于django連接數(shù)據(jù)庫獲取數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Python+Turtle制作七夕愛心光波表白的示例代碼

    Python+Turtle制作七夕愛心光波表白的示例代碼

    七夕要來啦,小編在閑暇之余創(chuàng)作了一個基于Python+Turtle的愛心光波表白,文中有詳細的代碼示例,對我們七夕表白有很大的幫助,感興趣的小伙伴們快來來看看吧
    2023-08-08
  • Python裝飾器簡單用法實例小結(jié)

    Python裝飾器簡單用法實例小結(jié)

    這篇文章主要介紹了Python裝飾器簡單用法,結(jié)合實例形式總結(jié)分析了Python裝飾器的基本功能、簡單用法及相關(guān)操作注意事項,需要的朋友可以參考下
    2018-12-12
  • python基于watchdog庫全自動化監(jiān)控目錄文件

    python基于watchdog庫全自動化監(jiān)控目錄文件

    這篇文章主要介紹了python基于watchdog庫全自動化監(jiān)控目錄文件,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-03-03

最新評論