我試圖在Python 2.6中使用re來查找更大數字序列中的每個10位數字序列。Python的正則表達式找到所有重疊的匹配?
我很容易抓住沒有重疊的比賽,但我希望在數字系列中的每一場比賽。例如。
在「123456789123456789」
我應該得到以下列表:
[1234567891,2345678912,3456789123,4567891234,5678912345,6789123456,7891234567,8912345678,9123456789]
我發現一個「前瞻」的引用,但我見過的例子只能說明對數字相當比較大的分組,我還沒有能夠將它們轉換成兩位數字以外。
當重疊匹配開始於同一點時,例如,匹配「a | ab | abc」和「abcd」只會返回一個結果,所提出的解決方案將不起作用。是否有解決方案,不涉及多次調用match(),手動跟蹤「結束」邊界? – 2011-10-28 19:10:09
@VítorDeAraújo:像'(a | ab | abc)'這樣的重疊正則表達式通常可以被重寫爲與嵌套的捕獲組不重疊的重寫表達式。 '(a(b(c)?)?)?',我們在開箱比賽時忽略最外面的(即最左邊的)捕獲組。毫無疑問,這是輕微的痛苦,不太清晰。這也將是一個更高性能的匹配正則表達式。 – smci 2017-11-20 02:30:11