1

I want to find all the locations of 0000 from string.

text = "001111000000010100000"
for m in re.finditer(r"0{4}", text):
    print(m)

This sample code result is below.

<_sre.SRE_Match object; span=(6, 10), match='0000'>
<_sre.SRE_Match object; span=(16, 20), match='0000'>

I can see where finditer found 0000 by span. But what I was expecting is different.

My expectation is below.

<_sre.SRE_Match object; span=(6, 10), match='0000'>
<_sre.SRE_Match object; span=(7, 11), match='0000'>
<_sre.SRE_Match object; span=(8, 12), match='0000'>
<_sre.SRE_Match object; span=(9, 13), match='0000'>
<_sre.SRE_Match object; span=(16, 20), match='0000'>
<_sre.SRE_Match object; span=(17, 21), match='0000'>

How can I achieve my expectation?
If there is other useful built in method or python package, please advise me.

Thanks!

This question looks like same as mine at a grance. However my question's point is location, not a string.

Python regex find all overlapping matches?

After reading above question, I got a hint.
Here is my modified code.

text = "001111000000010100000"
for m in re.finditer(r"(?=(0{4}))", text):
    print(m)
    print(f"Indexes: {m.span(1)}")
    print(f"Matched string: {m.group(1)}")

And the result is here.

<_sre.SRE_Match object; span=(6, 6), match=''>
Indexes: (6, 10)
Matched string: 0000
<_sre.SRE_Match object; span=(7, 7), match=''>
Indexes: (7, 11)
Matched string: 0000
<_sre.SRE_Match object; span=(8, 8), match=''>
Indexes: (8, 12)
Matched string: 0000
<_sre.SRE_Match object; span=(9, 9), match=''>
Indexes: (9, 13)
Matched string: 0000
<_sre.SRE_Match object; span=(16, 16), match=''>
Indexes: (16, 20)
Matched string: 0000
<_sre.SRE_Match object; span=(17, 17), match=''>
Indexes: (17, 21)
Matched string: 0000

This is what I was expecting.
Thank you for telling me good past question in past.

Norabal
  • 13
  • 4

0 Answers0