===== Wyrażenia regularne ===== 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. ==== 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