Regex Problem zu lösen zwei Bedingungen

stimmen
-2

Hier ist das Problem. Ich brauche einen regulären Ausdruck zu schreiben, die alle Elemente im folgenden Text hervorhebt:

AAAAB

aber nicht in diesem Text:

ABEBA

Mein erster Gedanke war , zu verwenden , A?B?aber das hat nicht funktioniert. Jede Hilfe / Erklärung wäre sehr geschätzt

Veröffentlicht am 27/11/2018 um 17:56
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
2

Vorausgesetzt , dass Sie nur übereinstimmen sollen AAAAB, unabhängig davon , wo es im Vergleich zu anderem Text, dann könnten Sie den regulären Ausdruck verwenden:

A{4}B

Hier Amatch des Zeichen A, {4}entspricht 4 der vorstehenden Elemente (so in diesem Fall der Zeichenkette AAAA) und Bentspricht ein Auftreten des Zeichen B, so lange es nach der Folge von Zeichen AAAA kommt. Dies wird nicht die Sequenz übereinstimmen ABABA.

Beantwortet am 27/11/2018 um 18:04
quelle vom benutzer

stimmen
0

Ich nehme an , Sie wollen nicht passen nur viermal A und ein B , sondern:

  • Eine nicht leere Folge von A.
  • Dann wird eine nicht-leere Sequenz von B.
  • Und nichts weiter. Weder vor noch nach dort können andere Buchstaben / Zahlen auftreten.

Wenn die obige Formel richtig ist, verwenden:

^A+B+$

Beachten Sie die Verwendung von ^und $Anker.

Eine weitere Annahme: Richten Sie die obige Sequenz als einzelnes Wort , dh es kann sein , anderer „Umgebung“ Text, aber kein Brief oder Ziffer kann in der benachbarten Position zu dieser Saite bleiben (auch wenn es mit einem Leerzeichen getrennt werden).

In einem solchen Fall Gebrauch:

\bA+B+\b

Dieses Mal statt ^und $Dübel verwenden wir \b- Wortgrenzmarkierungen.

Beantwortet am 27/11/2018 um 20:10
quelle vom benutzer

stimmen
0

Wenn Ihr Problem ist nur, dass Sie Instanzen wollen, wo A vor B wiederholt wird, das ist einfach genug:

import re
match = re.compile('AA+?B')
match.match('AAAAB') #Finds a match
match.match('ABAB') #Finds no match

Wenn dies nicht das, was Sie suchen, brauchen Sie mehr Formulieren Sie erwartete Ausgabe zu sein, und vielleicht mehr Beispiele.

Beantwortet am 27/11/2018 um 18:02
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more