Regulärer Ausdruck für die genaue Anzahl der Zeichen?

73

Ich brauche einen regulären Ausdruck , der mit drei Großbuchstaben übereinstimmt, also AAA oder ABC oder DKE. Es kann jedoch nicht mit vier oder mehr übereinstimmen, wie AAAA oder ABCDEF oder aBBB.

Meine Lösung: ^([A-Z][A-Z][A-Z])$

Fragen :

  1. Ist das richtig?
  2. Gibt es einen anderen Weg, nur um zu lernen?
Daniel Scocco
quelle
@owlstead, das habe ich getan, und tatsächlich habe ich es anscheinend geschafft, selbst die richtige Antwort zu bekommen. Ich musste nachprüfen, um sicherzugehen, dass ich mich nicht geirrt habe, da ich neu bei Regex bin.
Daniel Scocco
Abgestimmte Frage, aber ich würde den Teil über Wiederholung noch einmal lesen, weil Sie auch über das Begrenzen von Wiederholungen
Maarten Bodewes

Antworten:

113

Was Sie haben, ist richtig, aber das ist mehr Gewissen:

^[A-Z]{3}$
Joseph Silber
quelle
Erwischt. Und diese beiden sollten die einzigen beiden Wege sein, oder? Ja, ich bin mir über den Großbuchstaben sicher.
Daniel Scocco
@ Daniels - Mit oder ohne Erfassungsgruppe. Ja.
Joseph Silber
6
@owlstead - Dies ist eine sehr gültige Frage. Das OP lernt eindeutig, demonstriert, was sie versuchen, und bittet um Anleitung. Die Frage ist sehr gut formuliert. Warum sollte jemand das schließen?
Joseph Silber
6
@owlstead - Keine Frage ist zu trivial oder zu "Neuling" .
Joseph Silber
@owlstead, ich habe auch über SO recherchiert und nichts gefunden, was mit meiner Frage identisch wäre, weshalb ich mich für das Posten entschieden habe.
Daniel Scocco
19

Ihre Lösung ist korrekt, aber Ihre Regex weist eine gewisse Redundanz auf.
Das ähnliche Ergebnis kann auch aus dem folgenden regulären Ausdruck erhalten werden:

^([A-Z]{3})$

Das {3}zeigt an, dass das [A-Z]genau dreimal erscheinen muss.

Ali Shah Ahmed
quelle
1
Dank dafür. Es ist jedoch die gleiche Antwort wie bei der vorherigen Person, daher werde ich seine Antwort als die richtige auswählen, um fair zu sein.
Daniel Scocco
1
Ja, das habe ich auch bemerkt, nachdem ich meine Antwort gepostet habe. Nun, ich wollte nur helfen, also spielt es keine Rolle, ob es nicht als richtige Antwort markiert ist. Trotzdem danke für den Kommentar :)
Ali Shah Ahmed