Capturing the positions of "start" and "end" markers in a multi-line string Is there any better (and shorter) way to get index of a regex match in Python?

import re
sstring = """
this is dummy text
which starts with nothing
and ends with something
"""

starts = re.finditer('start[s]?', sstring)
ends = re.finditer('end[s]?', sstring)

for m in starts:
    print (m.start())

for m in ends:
    print (m.end())


For me, there is only one starts and endsmatch in the string.
If you are certain that there is exactly one match, then you don't need to iterate.  You could write:

start, end = re.search('start.*ends?', sstring, re.DOTALL).span()


To note:


Take advantage of re.DOTALL so that the regex can span multiple lines.
Use match.span() and destructuring assignment to get both the start and end in one statement.
The [s]? after start is, from a mechanical viewpoint, useless.  You might want to keep it just for symmetry.


The spacing in print (something) is kind of weird; print(something) would be more conventional.