簡體   English   中英

捕獲組如何工作? (wrt python正則表達式)

[英]How do capture groups work? (wrt python regular expressions)

在使用正則表達式幫助解決Python挑戰中的問題時,我遇到了一些使我感到困惑的行為。

這里

(...)匹配括號內的正則表達式。

'+'使得結果RE匹配前一個RE的1次或更多次重復。

所以這是有道理的:

>>>import re
>>>re.findall(r"(\d+)", "1111112")
['1111112']

但這不是:

>>> re.findall(r"(\d)+", "1111112")
['2']

我意識到當正則表達式中存在組時,findall只返回組,但為什么只返回'2'? 比賽中所有1的發生了什么?

因為您只有一個捕獲組,但它反復“運行”,所以新匹配將重復輸入該組的“存儲空間”。 換句話說, 1秒在他們被隨后的1秒“覆蓋”並最終被2覆蓋時丟失了。

你通過在')'之后附加'+'來重復組本身,我不知道實現細節但它匹配7次,並且只返回最后一個匹配。

在第一個中,您匹配7位數字,並使其成為一個組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM