关于match正则匹配仅返回首个结果及captures为空的疑问
关于
match()与eachmatch()匹配行为的差异解释 match()的设计逻辑就是仅返回第一个匹配结果,找到符合正则的子串后就停止搜索,不会继续扫描后续内容,所以执行match(r"\d+", "10, 11, 12")只会得到"10",这是预期行为。- 至于
m.captures为空,是因为你的正则表达式r"\d+"没有定义捕获组(即没有用()包裹需要单独提取的子表达式)。如果改成r"(\d+)",m.captures就会包含捕获到的"10"。 eachmatch()的定位就是遍历整个字符串,返回所有符合正则的匹配项,所以它能正常获取"10"、"11"、"12"全部结果,和match()的单匹配定位形成互补。
内容的提问来源于stack exchange,提问作者Hadamard
相关产品推荐
相关产品推荐

