-2
我有一個字符串,必須提取。問題是我無法在重複中描述重複。因此,這裏是代碼:Python正則表達式重複組內重複
f = "Makimak-cg_mk_Mokarmi"
pattern = "([A-Za-z][A-Za-z0-9]+)((?:[-_]([a-z]{2}))+)"
mO = re.match(pattern, f)
print mO.groups()
而結果將是:
('Makimak', '-cg_mk', 'mk')
但我想獲得的元組是這樣的:
('Makimak', '-cg_mk', 'cg', 'mk')
所以有一組「 - cg_mk「,其中包括兩個字符模式的重複。但是,就是這樣沒有事情:
[a-z]{2}+
結果的羣體給予回覆只有在這裏表示,重複的最後一部分:
([a-z]{2})
我的想法是,應該有一個「+」太這樣:
([a-z]{2})+
它給出了相同的結果。生成匹配對象,只是我無法獲得我想要的組。
我懷疑這是可能的一個簡單的Python正則表達式使用're'。 AFAIK,'re'內的所有功能處理*非重疊*發生。捕捉重疊的發生似乎相當艱鉅... – mgilson 2013-02-12 17:21:07
你能解釋更多關於你想要達到的目標嗎?爲什麼你需要重複輸出?這應該與其他什麼輸入? – deadly 2013-02-12 17:30:08
我只是好奇我能用模塊做些什麼。是否有可能在一行中得到我上面描述的結果。當然,我認爲像F.J寫的解決方案。 – Prag 2013-02-13 10:07:01