How can I find all matches to a regular expression in Python?


Question

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?

1
267
11/13/2017 11:56:35 PM

Accepted Answer

Use re.findall or re.finditer instead.

re.findall(pattern, string) returns a list of matching strings.

re.finditer(pattern, string) returns an iterator over MatchObject objects.

Example:

re.findall( r'all (.*?) are', 'all cats are smarter than dogs, all dogs are dumber than cats')
# Output: ['cats', 'dogs']
472
2/24/2019 5:48:04 PM

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon