如何匹配多个字符';n';使用Python RE模块的次数?

如何匹配多个字符';n';使用Python RE模块的次数?,python,regex,Python,Regex,我有一个序列:x-x-x-x-x-x-x-x-x-x-x-x 我想在x后面匹配'x-'n次。x是一个数字。 我该怎么做? 我知道{n}与前面的RE n次匹配,但下面的RE不起作用: pattern = \d-{n}\d 它可能会尝试匹配-n次。 我正在使用python 3.3 [编辑]一种方法是使用forloop进行concat,但我不想这样做。还有更优雅的方式吗 我知道{n}与前面的RE n次匹配,但下面的RE不起作用: pattern = \d-{n}\d 对,因为前面的表达式是- 如果

我有一个序列:x-x-x-x-x-x-x-x-x-x-x-x
我想在x后面匹配'x-'n次。x是一个数字。
我该怎么做?
我知道{n}与前面的RE n次匹配,但下面的RE不起作用:

pattern = \d-{n}\d
它可能会尝试匹配-n次。
我正在使用python 3.3

[编辑]一种方法是使用forloop进行concat,但我不想这样做。还有更优雅的方式吗

我知道{n}与前面的RE n次匹配,但下面的RE不起作用:

pattern = \d-{n}\d
对,因为前面的表达式是
-

如果希望前面的表达式为
\d-
,则必须将其设为一个组。这将在中进行解释,以及关于regexps的大多数其他教程:

pattern = r'(\d-){n}\d'
默认情况下,组正在捕获,这意味着每个组都可以在反向引用中引用。这通常很好,但是如果您想引用一些组而不是其他组,请阅读下面几节中关于非捕获组的内容。基本上:

pattern = r'(?:\d-){n}\d'

\d-
放入非捕获组:

>>> re.match(r'(?:\d-){5}\d', '1-2-3-4-5-6')
<_sre.SRE_Match object at 0x0000000002BD0C60>
重新匹配(r'(?:\d-{5}\d','1-2-3-4-5-6')
感谢您提供了信息最丰富的答案!你含蓄地回答了我的第二个问题。