2014-01-26 31 views
0

我有一個序列:x-x-x-x-x-x-x
我想跟x匹配'x-'n次。 x是一個數字。
我該怎麼做?
我知道{N}前面的RE N次的比賽,但下面的RE不起作用:
如何使用Python RE模塊匹配多個字符的'n'次?

pattern = \d-{n}\d 

它可能正試圖尋找匹配 - N次來代替。
我正在使用Python 3.3

[編輯]一種方法是使用forloop來concat,但我不想這樣做。有沒有更優雅的方式?

回答

1

我知道{N}前面的RE N次的比賽,但下面的RE不起作用:

pattern = \d-{n}\d 

正確的,因爲這裏的前面的表達式是-

如果你想\d-是前面的表達式,你必須把它作爲一個組。這在Regular Expression HOWTO解釋,和大多數其他教程上的正則表達式:

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

默認情況下,羣體捕捉,意思每個人都可以在一個反向引用來引用。這通常很好,但如果您想引用某些組而不是其他組,請閱讀有關非捕獲組的部分內容。基本上是:

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

謝謝你的最翔實的答案!你含蓄地回答了我的第二個問題。 – user2316667

1

\d-在非捕獲組:

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