Ślad: • regex

Wyrażenia regularne

Wyrażenia regularne (ang. regular expressions, regex, regexp) to wzorce używane do wyszukiwania i przetwarzania tekstu. Pozwalają definiować złożone kryteria wyszukiwania, obejmujące pojedyncze znaki, grupy znaków, powtarzające się wzorce i wiele innych konstrukcji.

POSIX BRE (Basic Regular Expressions) i ERE (Extended Regular Expressions) to dwa warianty składni wyrażeń regularnych. BRE jest bardziej ograniczony i wymaga użycia znaków ucieczki (backslash) w niektórych konstrukcjach, podczas gdy ERE oferuje bardziej rozbudowaną składnię, w której nie trzeba ich stosować.

Podstawowe składniki wyrażeń regularnych

Konstrukcja BRE ERE
Dowolny pojedynczy znak . '' | ''. '' | | Klasa znaków | ''[abc] '' | ''[abc] '' | | | ''[a-z] '' | ''[a-z] '' | | Klasa wykluczająca | ''[^abc] '' | ''[^abc] '' | | Początek linii | ''^ '' | ''^ '' | | Koniec linii | ''$ '' | ''$ '' | | Zero lub więcej | ''a* '' | ''a* '' | | Jedno lub więcej | ''a+ '' | ''a+ '' | | Zero lub jedno | ''a? '' | ''a? '' | | Powtórzenia {n} razy | ''a{2} '' | ''a{2} '' | | Powtórzenia {n,m} | ''a{2,4} '' | ''a{2,4} '' | | Grupowanie | ''(abc) '' | ''(abc) '' | | Alternatywa | ''(abc|def) '' | ''(abc|def)
Granice słowa (GNU) ''<word> '' ''<word> ''
Program BRE ERE
grep ''grep 'pattern' file '' ''grep -E 'pattern' file ''
egrep ''egrep 'pattern' file ''
sed ''sed -n '/pattern/p' file '' ''sed -E -n '/pattern/p' file ''
awk ''awk '/pattern/ {print}' file ''
bash (if) ''if [[ $var =~ pattern ]]; then … fi ''

Przykłady użycia

Dopasowanie adresu e-mail:

[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
  
Dopasowanie daty w formacie dd/mm/yyyy:
[0-9]{2}/[0-9]{2}/[0-9]{4}

Dopasowanie słowa zaczynającego się na „a” i kończącego na „e”:

\<a\w*e\>

Przykładowe polecenia

grep 'a.*e' /usr/share/dict/words
ls /bin | grep -E '^.{3}$'
grep '^a.*e$' /usr/share/dict/words
grep 'a.*a.*a' /usr/share/dict/words
grep -v '^$' plik.txt

Zasoby online