Match text between two strings with regular expression

125,213

Solution 1

Use re.search

>>> import re
>>> s = 'Part 1. Part 2. Part 3 then more text'
>>> re.search(r'Part 1\.(.*?)Part 3', s).group(1)
' Part 2. '
>>> re.search(r'Part 1(.*?)Part 3', s).group(1)
'. Part 2. '

Or use re.findall, if there are more than one occurances.

Solution 2

With regular expression:

>>> import re
>>> s = 'Part 1. Part 2. Part 3 then more text'
>>> re.search(r'Part 1(.*?)Part 3', s).group(1)
'. Part 2. '

Without regular expression, this one works for your example:

>>> s = 'Part 1. Part 2. Part 3 then more text'
>>> a, b = s.find('Part 1'), s.find('Part 3')
>>> s[a+6:b]
'. Part 2. '
Share:
125,213
Carlos Muñiz
Author by

Carlos Muñiz

Updated on July 08, 2022

Comments

  • Carlos Muñiz
    Carlos Muñiz almost 2 years

    I would like to use a regular expression that matches any text between two strings:

    Part 1. Part 2. Part 3 then more text
    

    In this example, I would like to search for "Part 1" and "Part 3" and then get everything in between which would be: ". Part 2. "

    I'm using Python 2x.