Maison  >  Questions et réponses  >  le corps du texte

python - Dans les expressions régulières, si la seconde moitié de la chaîne correspondante est la première moitié de la chaîne correspondante suivante, comment l'implémenter?

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!

给我你的怀抱给我你的怀抱2686 Il y a quelques jours923

répondre à tous(1)je répondrai

  • 给我你的怀抱

    给我你的怀抱2017-06-12 09:29:43

    r'(?<=[A-Z]{3})([a-z])(?=[A-Z]{3})'

    >>> import re
    >>> rawstring = 'aAFDdADDdDFDsDFS'
    >>> reg = r'(?<=[A-Z]{3})([a-z])(?=[A-Z]{3})'
    >>> pattern = re.compile(reg)
    >>> pattern.findall(rawstring)
    ['d', 'd', 's']

    répondre
    0
  • Annulerrépondre