2017-05-07 58 views
3

我是python的新手,我試圖用字符串中的模式匹配來構建一個元組列表,其中包含模式匹配的開始和結束索引。Python中模式的多次發生

我需要匹配一個模式,該模式以2個連續的0開始,以2個連續的1s結束,其間有0和1的組合。

例如,

s = '00101010111111100001011' 

對於某些類型的操作返回的,

[(0, 10), (15, 23)] 

我可以使用找到的字符串的圖案的多次出現,

ind = [(m.start(), m.end()) for m in re.finditer(pattern, s)] 

I」米只是不知道如何寫正則表達式(即模式)輸出我想要的。

回答

6

使用以下模式:

00[01]*?11 

regex demo

詳細

  • 00 - 連續兩個0小號
  • [01]*? - 零個或多個0個或1字符,如儘可能(如*?是惰性限定符)
  • 11 - 兩個連續1字符。

Python demo

import re 
s = '00101010111111100001011' 
rx = r'00[01]*?11' 
print([(x.start(),x.end()) for x in re.finditer(rx, s)]) 
# => [(0, 10), (15, 23)]