Delving Deeper
Regular Expressions
Multiple Matches
So far, the example patterns have all used search()
to look for single instances of literal text strings. The findall()
function returns all of the substrings of the input that match the pattern without overlapping.
# re_findall.py import re text = 'abbaaabbbbaaaaa' pattern = 'ab' for match in re.findall(pattern, text): print('Found {!r}'.format(match))
This example input string includes two instances of ab
.
$ python3 re_findall.py Found 'ab' Found 'ab'
The finditer()
function returns an iterator that produces Match
instances instead of the strings returned by findall()
.
# re_finditer.py import re text = 'abbaaabbbbaaaaa' pattern = 'ab' for match in re.finditer(pattern, text): s = match.start() e = match.end() print('Found {!r} at {:d}:{:d}'.format( text[s:e], s, e))
This example finds the same two occurrences of ab
, and the Match
instance shows where they are found in the original input.
$ python3 re_finditer.py Found 'ab' at 0:2 Found 'ab' at 5:7