欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python 正則表達(dá)式的非捕獲組詳解

 更新時間:2025年02月21日 10:20:40   作者:qq_27390023  
非捕獲組 ((?:...)) 在 Python 正則表達(dá)式中用于分組但不保存匹配結(jié)果,通過 '?' 表示非捕獲標(biāo)記,常用于簡化正則表達(dá)式和提高性能,它在選擇、提高匹配性能和結(jié)構(gòu)化復(fù)雜表達(dá)式方面都有優(yōu)勢,本文介紹Python 正則表達(dá)式的非捕獲組的相關(guān)知識,感興趣的朋友一起看看吧

在 Python 正則表達(dá)式中,非捕獲組 ((?:...)) 是一種用于分組不保存匹配結(jié)果的結(jié)構(gòu)。它與普通的捕獲組 (...) 語法類似,但在匹配時不會創(chuàng)建編號或命名的組,常用于簡化正則表達(dá)式和提高性能。

1. 語法

(?:pattern)
  • ?: 表示非捕獲標(biāo)記。
  • pattern 是要匹配的正則表達(dá)式模式。

 2. 示例對比

普通捕獲組 ()

import re
text = "cat dog"
# 捕獲組
match = re.search(r"(cat) (dog)", text)
print(match.groups())  # ('cat', 'dog')
print(match.group(1))  # cat
print(match.group(2))  # dog

結(jié)果:groups() 返回所有捕獲的子組,group(1)、group(2) 通過編號訪問。

非捕獲組 (?:...)

import re
text = "cat dog"
# 非捕獲組
match = re.search(r"(?:cat) (?:dog)", text)
print(match.groups())  # ()
print(match.group(0))  # cat dog

結(jié)果:groups() 返回空元組,因為沒有捕獲的組。

 3. 主要應(yīng)用場景

1?? 選擇(|)時減少復(fù)雜性

import re
text = "color colour"
# 捕獲組
matches = re.findall(r"(col(or|our))", text)
print(matches)  # [('color', 'or'), ('colour', 'our')]
# 非捕獲組
matches = re.findall(r"col(?:or|our)", text)
print(matches)  # ['color', 'colour']

優(yōu)勢(?:or|our) 僅用于匹配,不保存子組,結(jié)果更簡潔。

2?? 提高匹配性能

import re
import time
text = "ab" * 100000
# 捕獲組
start = time.time()
re.search(r"(ab)+", text)
print("捕獲組耗時:", time.time() - start)
# 非捕獲組
start = time.time()
re.search(r"(?:ab)+", text)
print("非捕獲組耗時:", time.time() - start)

優(yōu)勢:非捕獲組不保存匹配內(nèi)容,因此速度更快,內(nèi)存占用更少

3?? 結(jié)構(gòu)化復(fù)雜表達(dá)式

import re
text = "2024-02-19"
# 捕獲組
match = re.search(r"(\d{4})-(\d{2})-(\d{2})", text)
print(match.groups())  # ('2024', '02', '19')
# 非捕獲組
match = re.search(r"(?:\d{4})-(?:\d{2})-(?:\d{2})", text)
print(match.groups())  # ()

優(yōu)勢:結(jié)構(gòu)清晰,無需保存中間匹配結(jié)果。

4. 捕獲組 vs. 非捕獲組對比

特性捕獲組 (pattern)非捕獲組 (?:pattern)
結(jié)果保存保存,group() 可訪問不保存,無 group() 結(jié)果
處理性能慢(需要保存匹配)快(無需保存匹配)
復(fù)雜性復(fù)雜,需管理組索引簡化,適用于邏輯分組
應(yīng)用場景需要保存匹配時僅匹配不保存時

5. 結(jié)論

  • 需要子組內(nèi)容:使用普通捕獲組 (...),可通過 group(n) 獲取。
  • 僅控制結(jié)構(gòu):使用非捕獲組 (?:...),提高性能并簡化表達(dá)式。
  • 性能優(yōu)化:非捕獲組減少內(nèi)存消耗,適合大型文本處理。

到此這篇關(guān)于Python 正則表達(dá)式的非捕獲組介紹的文章就介紹到這了,更多相關(guān)Python 正則表達(dá)式非捕獲組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python 實現(xiàn)簡單的FTP程序

    python 實現(xiàn)簡單的FTP程序

    這篇文章主要介紹了python 實現(xiàn)簡單的FTP程序,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • videocapture庫制作python視頻高速傳輸程序

    videocapture庫制作python視頻高速傳輸程序

    python視頻高速傳輸程序,大家參考使用吧
    2013-12-12
  • Python遍歷某目錄下的所有文件夾與文件路徑

    Python遍歷某目錄下的所有文件夾與文件路徑

    這篇文章主要介紹了Python遍歷某目錄下的所有文件夾與文件路徑 以及輸出中文亂碼問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 使用Python requests庫發(fā)送JSON數(shù)據(jù)的POST請求步驟

    使用Python requests庫發(fā)送JSON數(shù)據(jù)的POST請求步驟

    在Python這個強(qiáng)大的編程語言中,requests庫是一個廣泛使用且功能強(qiáng)大的HTTP請求庫,發(fā)送POST請求并附帶JSON數(shù)據(jù)是一個非常常見的需求,本文給大家介紹了如何用Python的requests庫發(fā)送JSON數(shù)據(jù)的POST請求,需要的朋友可以參考下
    2024-06-06
  • Python數(shù)據(jù)分析之pandas讀取數(shù)據(jù)

    Python數(shù)據(jù)分析之pandas讀取數(shù)據(jù)

    Pandas讀取的文件主要有CSV,TXT和JSON,今天就整理了這3種文件格式的讀取和導(dǎo)出代碼,文中有非常詳細(xì)的代碼示例及介紹,需要的朋友可以參考下
    2021-06-06
  • Django前后端分離csrf token獲取方式

    Django前后端分離csrf token獲取方式

    這篇文章主要介紹了Django前后端分離csrf token獲取方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 詳解windows python3.7安裝numpy問題的解決方法

    詳解windows python3.7安裝numpy問題的解決方法

    這篇文章主要介紹了windows python3.7安裝numpy問題的解決方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • pytest用例執(zhí)行順序和跳過執(zhí)行詳解

    pytest用例執(zhí)行順序和跳過執(zhí)行詳解

    本文主要介紹了pytest用例執(zhí)行順序和跳過執(zhí)行詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 答題輔助python代碼實現(xiàn)

    答題輔助python代碼實現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了答題輔助python代碼實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Python任務(wù)調(diào)度利器之APScheduler詳解

    Python任務(wù)調(diào)度利器之APScheduler詳解

    所謂的任務(wù)調(diào)度是指安排任務(wù)的執(zhí)行計劃,即何時執(zhí)行,怎么執(zhí)行等。這篇文章主要介紹了Python任務(wù)調(diào)度利器之APScheduler詳解,需要的朋友可以參考下
    2020-04-04

最新評論