为什么此正则表达式会返回由空字符串组成的附加组?

时间:2019-04-17 13:25:58

标签: python regex

我正在尝试处理以下形式的字符串:

" makes 3-pt jump shot from 25 ft"
"makes 2-pt hook shot from 12 ft"
"makes 2-pt dunk at rim"

我想提取镜头类型和距离并为此使用以下正则表达式:

r"\s*makes ([23]-pt (?:\w+\s?)+) (?:from ([0-9]{1,2}) ft|at (rim))

但是它返回以下内容:

[('3-pt jump shot', '25', '')]
[('2-pt hook shot', '12', '')]
[('2-pt dunk', '', 'rim')]

为什么正则表达式引擎返回三组?

但是由于我不明白的原因,findall函数返回三个元素,一个元素由一个空字符串组成。我想这可能与非捕获寄生虫中的捕获组有关,但是我找不到任何有用的东西。有人可以告诉我为什么会发生此错误,以及如何更改正则表达式以使其正常工作吗?

0 个答案:

没有答案