Regex entspricht einem von zwei Wörtern

301

Ich habe eine Eingabe, die nur 2 Werte haben kann appleoder banana. Welchen regulären Ausdruck kann ich verwenden, um sicherzustellen, dass eines der beiden Wörter eingereicht wurde?

CyberJunkie
quelle
2
In welcher Sprache / Umgebung wird dieser reguläre Ausdruck implementiert? Regex scheint in vielen Situationen unnötiger Aufwand zu sein.
Mickmackusa

Antworten:

467

Das wird es tun:

/^(apple|banana)$/

um auszuschließen von erfassten Strings (z $1, $2):

(?:apple|banana)
Phlogratos
quelle
43
Für einige ist es nützlich, dies als nicht erfassende Gruppe zu verwenden. Unter Verwendung (?:apple|banna)entweder passen, aber werden sie nicht in die Liste der erfassten Strings hinzufügen (zB $1, $2.. $N).
Doub1ejack
Hallo kurze Frage, was soll ich tun, wenn ich nicht möchte, dass Applebanana passt?
Grover Reyes
Die obige Regex stimmt mit Apfel und Banane überein, stimmt jedoch nicht mit Apfelbanana überein.
Phlogratos
99

Es gibt verschiedene Regex-Engines, aber ich denke, die meisten davon funktionieren damit:

apple|banana
rauchen
quelle
55
Wenn Sie mehr in Ihre Regex einfügen möchten, müssen Sie Ihre Wörter wie folgt in Klammern setzen : (apple|banana).
Brian J
aber wie kann man die Groß- und Kleinschreibung nicht berücksichtigen?
Nitish
Das ist mit der re.IGNORECASEFlagge gesetzt. ZB:re.compile("(apple|banana)", re.IGNORECASE)
Troels Ynddal
-8

/.txt|.tif/Auf SiteScope kann ein regulärer Ausdruck verwendet werden, um 'Dateinamenübereinstimmung' für den Verzeichnismonitor zu suchen, wenn zwei verschiedene Dateitypen durchsucht werden - Dateien, die auf .txt oder .tif enden

Sitescope Göttin
quelle