Multiple Occurrences of a Pattern in Python
python, regex
Solution
Use the following pattern:
00[01]*?11
See the regex demo
Details:
- `00` - two consecutive `0`s
- `[01]*?` - zero or more `0` or `1` chars, as few as possible (as `*?` is a lazy quantifier)
- `11` - two consecutive `1` chars.
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)]
Problem
I'm new to python and I'm trying to construct a list of tuples with the start and end indices for pattern matching in a string. I need to match a pattern that starts with 2 consecutive 0s and ends with 2 consecutive 1s with some combo of 0s and 1s in between. For example, ``` s = '00101010111111100001011' ``` With some type of operation returning, ``` [(0, 10), (15, 23)] ``` I can find multiple occurrences of a pattern in a string using, ``` ind = [(m.start(), m.end()) for m in re.finditer(pattern, s)] ``` I'm just not sure how to write the regular expression (i.e pattern) to output what I want.