The Question :
343 people think this question is useful
In a program I’m writing I have Python use the
re.search() function to find matches in a block of text and print the results. However, the program exits once it finds the first match in the block of text.
How do I do this repeatedly where the program doesn’t stop until ALL matches have been found? Is there a separate function to do this?
The Question Comments :
The Answer 1
614 people think this answer is useful
re.findall(pattern, string) returns a list of matching strings.
re.finditer(pattern, string) returns an iterator over
re.findall( r'all (.*?) are', 'all cats are smarter than dogs, all dogs are dumber than cats')
# Output: ['cats', 'dogs']
[x.group() for x in re.finditer( r'all (.*?) are', 'all cats are smarter than dogs, all dogs are dumber than cats')]
# Output: ['all cats are', 'all dogs are']