===== 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) | ''\'' | ''\'' | ^ 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": \ ==== 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 ==== * [[https://regexcrossword.com/|Regex Crossword]] * [[https://regex101.com/|regex tester]] * [[https://regexr.com/|RegExr]] an online tool to learn, build, & test Regular Expressions * [[wp>Regular_expression]] * [[http://www.regular-expressions.info/reference.html|Regular Expression Basic Syntax Reference]] * [[http://www.zytrax.com/tech/web/regex.htm|Regular Expressions - User Guide]] * [[https://code.tutsplus.com/tutorials/8-regular-expressions-you-should-know--net-6149|8 Regular Expressions You Should Know]] * [[https://remram44.github.io/regex-cheatsheet/regex.html|Regex cheatsheet]] - porównanie BRE, ERE, PCRE