[英]Missing group in Python regex match result
考慮以下代碼片段:
import re
m = re.match(r'(\d-\w){2,3}', r'1-a2-b')
m.group(0), m.group(1), m.groups()
('1-a2-b', '2-b', ('2-b',))
因此m.group(0)會按預期返回整個匹配項,但是為什么m.group(1)僅返回第二個重復項“ 2-b”? 第一個重復項“ 1-a”在哪里?
謝謝!
因為您僅為捕獲標記提供了捕獲組,該標記位於重新定義量{2,3}
( greedy )之前,后者僅捕獲最后一個匹配項。 因此,還應在捕獲組中包含重新定義量詞或范圍量詞,並將先前的捕獲組設為非捕獲組,否則它將產生兩個組。 嘗試這個,
((?:\d-\w){2,3})
這與(.)+
和(.+)
完全相同
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.