Regex pasuje do jednego z dwóch słów


301

Mam dane wejściowe, które mogą mieć tylko 2 wartości applelub banana. Jakiego wyrażenia regularnego mogę użyć, aby upewnić się, że któreś z dwóch słów zostało przesłane?


2
W jakim języku / środowisku ten regex jest wdrażany? Regex wydaje się niepotrzebnym narzutem w wielu sytuacjach.
mickmackusa

Odpowiedzi:


467

To wystarczy:

/^(apple|banana)$/

do wykluczenia z przechwyconych ciągi (np $1, $2):

(?:apple|banana)

43
Dla niektórych przydatne będzie użycie tego jako grupy nie przechwytującej. Korzystanie (?:apple|banna)dopasuje albo, ale nie doda je do listy przechwyconych ciągi (np $1, $2.. $N).
doub1ejack,

Cześć, szybkie pytanie, co powinienem zrobić, jeśli nie chcę, aby applebanana pasowała?
Grover Reyes

Wyrażenie powyżej pasuje do jabłka i banana, ale nie pasuje do applebanana.
phlogratos

99

Istnieją różne silniki wyrażeń regularnych, ale myślę, że większość z nich będzie działać z tym:

apple|banana

55
Jeśli planujesz umieścić więcej w regex, musisz umieścić nawiasy wokół słów, tak: (apple|banana).
Brian J

ale jak sprawić, by wielkość liter nie była uwzględniana?
Nitish

To jest ustawione z re.IGNORECASEflagą. Np .:re.compile("(apple|banana)", re.IGNORECASE)
Troels Ynddal

-8

Wyrażenie regularne /.txt|.tif/może być użyte w SiteScope do zlokalizowania „dopasowania nazwy pliku” dla monitora katalogu podczas wyszukiwania dwóch różnych typów plików - plików z rozszerzeniem .txt lub .tif

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.