我有一個序列: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,但我不想這樣做。有沒有更優雅的方式?
我有一個序列: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,但我不想這樣做。有沒有更優雅的方式?
我知道{N}前面的RE N次的比賽,但下面的RE不起作用:
pattern = \d-{n}\d
正確的,因爲這裏的前面的表達式是-
。
如果你想\d-
是前面的表達式,你必須把它作爲一個組。這在Regular Expression HOWTO解釋,和大多數其他教程上的正則表達式:
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>
謝謝你的最翔實的答案!你含蓄地回答了我的第二個問題。 – user2316667