web-dev-qa-db-fra.com

Faire correspondre le texte entre deux chaînes avec une expression régulière

Je voudrais utiliser une expression régulière qui correspond à n'importe quel texte entre deux chaînes:

Part 1. Part 2. Part 3 then more text

Dans cet exemple, je voudrais rechercher "Partie 1" et "Partie 3", puis obtenir tout ce qui se trouve entre: ". Partie 2."

J'utilise Python 2x.

14
Carlos Muñiz

Utilisation 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. '

Ou utiliser re.findall, s'il y a plus d'une occurrence.

29
Avinash Raj

Avec une expression régulière:

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

Sans expression régulière, celle-ci fonctionne pour votre exemple:

>>> 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. '
9
lord63. j