Heim  >  Fragen und Antworten  >  Hauptteil

python - Wenn in regulären Ausdrücken die zweite Hälfte der übereinstimmenden Zeichenfolge zufällig die erste Hälfte der nächsten übereinstimmenden Zeichenfolge ist, wie kann dies implementiert werden?

Ich habe kürzlich das Re-Modul überprüft und plötzlich über diese Frage nachgedacht: Wenn die zweite Hälfte der übereinstimmenden Zeichenfolge zufällig die erste Hälfte der nächsten übereinstimmenden Zeichenfolge ist, wie kann dies erreicht werden? Zum Beispiel gibt es eine Zeichenfolge aAFDdADDdDFDsDFS, und ich möchte die Kleinbuchstaben d, d und s, umgeben von drei Großbuchstaben, zuordnen. Mein Code sieht so aus:

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())

Die erzielten Ergebnisse sind wie folgt:

aAFDdADDd
DFDsDFS

Das zweite d fehlt. Was soll ich tun, wenn ich auch das zweite d abgleichen möchte? Danke!

给我你的怀抱给我你的怀抱2686 Tage vor917

Antworte allen(1)Ich werde antworten

  • 给我你的怀抱

    给我你的怀抱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']

    Antwort
    0
  • StornierenAntwort