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

时间:2014-01-26 05:34:32

标签: python regex

我有一个序列:x-x-x-x-x-x-x-x-x-x-x-x
我希望匹配'x-'n次跟随x。 x是一个数字 我怎么能这样做?
我知道{n}匹配前面的RE n次,但后面的RE不起作用:

pattern = \d-{n}\d

可能会尝试匹配-n次 我正在使用python 3.3

[编辑]一种方法是使用forloop来连接,但我不想这样做。有更优雅的方式吗?

2 个答案:

答案 0 :(得分:1)

  

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

pattern = \d-{n}\d

是的,因为前面的表达式是-

如果您希望\d-成为前面的表达式,则必须将其设为一个组。这在Regular Expression HOWTO和大多数其他有关正则表达式的教程中进行了解释:

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

默认情况下,组捕获 - 意味着每个组都可以在后引用中引用。这通常很好,但是如果你想引用一些组而不是其他组,那么请阅读几个部分的非捕获组。基本上是:

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

答案 1 :(得分:1)

\d-放入非捕获组:

>>> re.match(r'(?:\d-){5}\d', '1-2-3-4-5-6')
<_sre.SRE_Match object at 0x0000000002BD0C60>
相关问题