我有一个序列: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来连接,但我不想这样做。有更优雅的方式吗?
答案 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>