Przejdź do głównej treści
eLearner.app
Moduł 4 · Lekcja 2 z 414/32 w kursie~10 min
Lekcje modułu (2/4)

Alternatywy: `|`

Pionowa kreska (pipe) | oznacza LUB (OR) w wyrażeniach regularnych: wzorzec pasuje, jeśli pasuje jedna z alternatyw. Jej priorytet (precedencja) jest bardzo niski: znak | rozdziela wszystko po swojej lewej i prawej stronie, aż do ograniczającej go grupy lub początku/końca wzorca.

Code
Pattern: cane|gatto|criceto
Sample:  Ho un cane, un gatto e un criceto.
               ^^^^     ^^^^^         ^^^^^^^

Nawiasy określają pierwszeństwo

Bez użycia nawiasów alternatywy rozciągają się od początku do końca wzorca. Niemal zawsze chcesz ograniczyć działanie operatora LUB do określonej części wzorca: ujmij ją w grupę.

Code
Pattern   Significato (errato vs corretto)
^a|b$     "inizio + a" oppure "b + fine"           (prawdopodobnie błędne)
^(a|b)$   "inizio + (a lub b) + fine"              (prawdopodobnie poprawne)

Odnośnie typowego układu alternatyw: umieszczaj te bardziej szczegółowe/dłuższe na początku. Silnik analizuje je od lewej do prawej i zatrzymuje się na pierwszej pasującej: wzorzec gat|gatto zawsze dopasowałby tylko gat.

Precedencja i izolacja alternatyw

Operator | ma bardzo niski priorytet. Zapis ^abc|def$ oznacza poszukiwanie "ciągu rozpoczynającego się od abc LUB ciągu kończącego się na def". Aby wyszukać "początek ciągu, po którym następuje abc lub def, po którym następuje koniec ciągu", musisz zapisać ^(abc|def)$.

Spróbuj sam

Ćwiczenie#regex.m4.l2.e1
Próby: 0Ładowanie...

Znajdź każde wystąpienie trzech zwierząt `cane`, `gatto`, `criceto` w tekście (w dowolnej kolejności).

Ładowanie edytora...
Pokaż wskazówkę

Pionowa kreska rozdziela alternatywy. Użyj flagi g, aby przechwycić je wszystkie.

Rozwiązanie dostępne po 3 próbach

Ćwiczenie powtórzeniowe

Ćwiczenie#regex.m4.l2.e2
Próby: 0Ładowanie...

Znajdź słowa `gennaio` lub `febbraio` TYLKO jako całe słowa (użyj ``, aby uniknąć dopasowań wewnątrz dłuższych słów). Użyj nawiasów, aby ograniczyć alternatywę.

Ładowanie edytora...
Pokaż wskazówkę

Zapis \b(gennaio|febbraio)\b ogranicza wybór do całych słów.

Rozwiązanie dostępne po 3 próbach

Dodatkowe wyzwanie

Ćwiczenie#regex.m4.l2.e3
Próby: 0Ładowanie...

Znajdź nazwy plików kończące się rozszerzeniami `.jpg`, `.png` lub `.gif`.

Ładowanie edytora...
Pokaż wskazówkę

Użyj pionowej kreski wewnątrz grupy, aby przełączać się między rozszerzeniami.

Rozwiązanie dostępne po 3 próbach