Wiedza fundamentalna› 1. Wyrażenia regularne›Lekcja 1.2 FUND-02

Regex: alternatywa i grupowanie

Po tej lekcji wiesz, jak zapisać „albo to, albo tamto” i jak nawiasy ograniczają zasięg alternatywy. Poznasz też różnicę między BRE a ERE i opcję -E.

~4 min czytania4 pojęcia4 pytaniasprawdzone ze źródłami 3 lis 2026
Źródła (2)

W jednej minucie

Definicja

Alternatywa to operator |, który dopasowuje tekst pasujący do któregokolwiek z dwóch wzorców.1

Ważne

Alternatywa mówi „albo to, albo tamto”. Nawiasy mówią, gdzie kończy się jedna opcja, a zaczyna reszta wzorca.

Zapamiętaj

Używasz | albo nawiasów w grep? Dodaj opcję -E.

Dwa dialekty: BRE i ERE

Specyfikacja opisuje dwa zapisy wyrażeń regularnych. Różnią się tym, które znaki są specjalne.

Definicja

BRE to podstawowy zapis wyrażeń regularnych, którego używa większość narzędzi.1

Definicja

ERE to rozszerzony zapis wyrażeń regularnych, który wspierają niektóre narzędzia zamiast podstawowego.1

ZapisBez -E (BRE)Z -E (ERE)
Alternatywa| to zwykły znak| łączy opcje
Grupa\( i \)( i )

Wiersz o alternatywie sprawdziliśmy w GNU grep 3.11.

W grep zapis ERE włączasz opcją -E.2 W BRE grupę tworzą znaki \( i \).1

Alternatywa: albo jedno, albo drugie

Kreska pionowa | łączy dwa wzorce w jeden, który pasuje do każdego z nich.

Przykład

Wzorzec kot|pies pasuje do linii z słowem kot oraz do linii z słowem pies.

printf 'kot\npies\nchomik\n' > a.txt
grep -E 'kot|pies' a.txt   # wypisze kot i pies

Linia chomik nie pasuje do żadnej opcji, więc grep jej nie wypisuje.

Nawiasy: grupowanie

Alternatywa obejmuje tyle, na ile jej pozwolisz. Nawiasy wyznaczają jej zasięg.

Definicja

Grupowanie to ujęcie fragmentu wzorca w nawiasy, żeby traktować go jak jedną całość.1

Tekstgr(a|e)ygra|ey
graypasujepasuje
greypasujepasuje
eynie pasujepasuje
granie pasujepasuje

Wyniki sprawdziliśmy poleceniem grep -E w wersji 3.11.

W gr(a|e)y opcje to a i e. W gra|ey opcje to całe gra i ey, bo nic ich nie ogranicza.

Pierwszeństwo operatorów

Gdy we wzorcu jest kilka operatorów, kolejność decyduje, co z czym się wiąże.1

PoziomKonstrukcjaSkutek
1Grupowanie ()wiąże najmocniej
2Konkatenacjawiąże słabiej niż grupa
3Alternatywa |wiąże najsłabiej

Pominęliśmy pozostałe poziomy z tabeli POSIX. Kolumna „Skutek” to nasz opis.

Przykład

Wzorzec abba|cde pasuje do abba albo do cde, a nie do abbade ani abbcde.1

printf 'abba\ncde\nabbade\nabbcde\n' > c.txt
grep -xE 'abba|cde' c.txt   # wypisze abba i cde

Opcja -x wymaga, by pasowała cała linia.2 Dzięki temu widać, że abbade nie jest dopasowaniem.

Częste błędy

Trzy pomyłki powtarzają się najczęściej, gdy zaczynasz używać alternatywy.

BłądSkutekPoprawka
kot|pies bez -Eszuka kreskiDodaj -E
gra|ey zamiast gr(a|e)yza szerokoUjęcie opcji w nawiasy
| na początku lub końcuwynik nieokreślonyDopisz brakującą opcję albo usuń kreskę

Kolumna „Poprawka” to nasza rekomendacja, nie cytat ze specyfikacji.

Uwaga — kreska na brzegu wzorca

Specyfikacja nie określa wyniku, gdy | stoi na początku albo na końcu wzorca ERE.1

Zapamiętaj

Chcesz znaleźć sam znak |? W ERE poprzedź go ukośnikiem wstecznym: \|.1

Pytania sprawdzające

Dlaczego grep 'kot|pies' plik nie działa jak alternatywa?

Bez -E wzorzec jest w trybie BRE, a tam | to zwykły znak. Opcja -E włącza ERE, w którym | łączy opcje.

Czym różni się gr(a|e)y od gra|ey?

W pierwszym nawiasy ograniczają alternatywę do jednego znaku, więc pasuje tylko gray i grey. W drugim opcje to całe gra i ey.

Dlaczego abba|cde nie pasuje do całej linii abbade?

Konkatenacja wiąże mocniej niż alternatywa, więc opcje to abba i cde, a nie abbade czy abbcde.

Co zmienia opcja -E w grep?

Włącza rozszerzony zapis wyrażeń regularnych (ERE), w którym | oraz ( i ) są operatorami.

Podsumowanie

  • Alternatywa | dopasowuje tekst pasujący do któregokolwiek z dwóch wzorców.
  • BRE to zapis podstawowy, ERE rozszerzony; w grep ERE włączasz opcją -E.
  • Nawiasy grupują fragment wzorca i wyznaczają zasięg alternatywy.
  • Konkatenacja wiąże mocniej niż alternatywa, a grupowanie mocniej niż konkatenacja.
  • | na początku lub końcu wzorca ERE daje wynik nieokreślony.
  • Znak | można dopasować dosłownie, poprzedzając go ukośnikiem wstecznym.

Źródła

  1. Regular Expressions — The Open Group (POSIX.1-2017)sprawdzone 2026-11-03
  2. GNU Grep 3.12 — GNU Projectsprawdzone 2026-11-03