J'étais en train de réviser le module re récemment et j'ai soudainement pensé à cette question : si la seconde moitié de la chaîne correspondante se trouve être la première moitié de la chaîne correspondante suivante, comment y parvenir ? Par exemple, il y a une chaîne aAFDdADDdDFDsDFS
, et je veux faire correspondre les lettres minuscules d, d et s entourées de trois lettres majuscules. Mon code est comme ceci :
import re
rawstring = 'aAFDdADDdDFDsDFS'
reg = r'[^A-Z]*[A-Z]{3}([a-z]+)[A-Z]{3}[^A-Z]*'
pattern = re.compile(reg)
r = pattern.finditer(rawstring)
for s in r:
print(s.group())
Les résultats obtenus sont les suivants :
aAFDdADDd
DFDsDFS
Le deuxième d est manquant. Que dois-je faire si je veux également faire correspondre le deuxième d ? Merci!
r'(?<=[A-Z]{3})([a-z])(?=[A-Z]{3})'