Wyrażenia regularne (ang. regular expressions, regex, regexp) to wzorce używane do wyszukiwania i manipulacji tekstem. Pozwalają one na definiowanie złożonych kryteriów wyszukiwania, które mogą obejmować pojedyncze znaki, grupy znaków, powtarzające się wzorce i wiele innych.

POSIX BRE (Basic Regular Expressions) i ERE (Extended Regular Expressions) to dwa standardy definiujące składnię wyrażeń regularnych. BRE jest bardziej ograniczony i wymaga użycia znaków ucieczki (backslash) dla niektórych konstrukcji, podczas gdy ERE oferuje bardziej rozbudowane możliwości bez konieczności stosowania znaków ucieczki.

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

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\>
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