Home > Backend Development > Python Tutorial > How Can I Find All Occurrences of a Substring in Python?

How Can I Find All Occurrences of a Substring in Python?

Patricia Arquette
Release: 2024-12-12 21:58:10
Original
928 people have browsed it

How Can I Find All Occurrences of a Substring in Python?

Finding All Occurrences of a Substring in Python

In Python, you can use the string.find() and string.rfind() methods to retrieve the index of a substring within a larger string. However, there isn't a built-in function specifically designed to return all occurrences of a substring.

Using Regular Expressions

A more powerful approach to finding multiple substring occurrences is to employ regular expressions:

import re

# Sample string
string = "test test test test"

# Find all occurrences of "test"
matches = [m.start() for m in re.finditer('test', string)]
print(matches)  # Output: [0, 5, 10, 15]
Copy after login

re.finditer generates a generator that yields individual match objects. Each match object provides the starting index of a matching substring.

Considering Overlapping Matches

By default, re.finditer looks for non-overlapping matches. To find overlapping matches, use a positive lookahead:

matches = [m.start() for m in re.finditer('(?=tt)', 'ttt')]
print(matches)  # Output: [0, 1]
Copy after login

The expression (?=tt) asserts that the substring "tt" appears at the current position but doesn't consume it.

Reverse Find-All Without Overlaps

To perform a reverse find-all without overlapping matches, combine positive and negative lookahead:

search = 'tt'
matches = [m.start() for m in re.finditer('(?=%s)(?!.{1,%d}%s)' % (search, len(search)-1, search), 'ttt')]
print(matches)  # Output: [1]
Copy after login

This expression ensures that "tt" appears immediately after the cursor but not within a certain lookback range (len(search)-1) in the reverse direction.

The above is the detailed content of How Can I Find All Occurrences of a Substring in Python?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template