Python (?:\d[-]*?){13,16}-与将模式与给定正则表达式匹配时给定的优先级混淆

Python (?:\d[-]*?){13,16}-与将模式与给定正则表达式匹配时给定的优先级混淆,python,regex,Python,Regex,我不明白为什么这个模式捕获了4564-1234-4325-2146,尽管它有19个数字,包括“-” 上述模式仅捕获了4564-1234435-2146-8 保留最后一个连字符和数字8它捕获13-16个数字,每个数字后面都有零个或多个空格或破折号([-]*?)。换句话说,{13,16}适用于整个组(?:\d[-]*?)。例如,它可以捕获1--2-3--4-5-6 7--8-9-0-1-2-3-4-5-6-。在您的示例中,它捕获以下16个块: 四, 五, 六, 四,- 一, 二, 三, 四,- 四

我不明白为什么这个模式捕获了
4564-1234-4325-2146
,尽管它有19个数字,包括“-” 上述模式仅捕获了4564-1234435-2146-8
保留最后一个连字符和数字8

它捕获13-16个数字,每个数字后面都有零个或多个空格或破折号(
[-]*?
)。换句话说,
{13,16}
适用于整个组
(?:\d[-]*?)
。例如,它可以捕获
1--2-3--4-5-6 7--8-9-0-1-2-3-4-5-6-
。在您的示例中,它捕获以下16个块:

  • 四,
  • 五,
  • 六,
  • 四,-
  • 一,
  • 二,
  • 三,
  • 四,-
  • 四,
  • 三,
  • 二,
  • 五,-
  • 二,
  • 一,
  • 四,
  • 六,