slajdy
Transkrypt
slajdy
Wyrażenia regularne Podsumowanie Wstęp do systemów wielozadaniowych laboratorium 05 — Wyrażenia regularne Jarosław Piersa Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 2013-10-22 J. Piersa WSWZ 2013/2014 Laboratorium 05 Wyrażenia regularne Podsumowanie Proste dopasowanie tekstu Dopasowanie dowolnych znaków Dopasowanie na początku / końcu wiersza Zakres znaków Dlaczego? zaawansowanie wyszukiwanie wzorców w tekstach zastępowanie wzorców dopasowanie wzorców przy pracy z tekstami współpraca z m. in. Vi, grep, sed, perl, językami programowania etc. J. Piersa WSWZ 2013/2014 Laboratorium 05 Wyrażenia regularne Podsumowanie Proste dopasowanie tekstu Dopasowanie dowolnych znaków Dopasowanie na początku / końcu wiersza Zakres znaków Prosty przykład Chcemy z pliku /etc/passwd wybrać linie zawierające któreś ze słów: Jan, Janusz lub root grep -E "Jan|Janusz|root" /etc/passwd w vi nieco inaczej: /Jan\|Janusz\|root zastępowanie w vi: :%s/Jan\|Janusz\|root/ZASTEPUJACY NAPIS/g J. Piersa WSWZ 2013/2014 Laboratorium 05 Wyrażenia regularne Podsumowanie Proste dopasowanie tekstu Dopasowanie dowolnych znaków Dopasowanie na początku / końcu wiersza Zakres znaków Prosty przykład Nie jesteśmy pewni czy pisaliśmy z polskimi czcionkami czy bez. chcemy z pliku /etc/passwd wybrać linie zawierające któreś ze słów: Jas lub Jaś grep -E "Ja[sś]" /etc/passwd podobnie możemy wyszukać ciągów w vi: /Ja[sś] J. Piersa WSWZ 2013/2014 Laboratorium 05 Wyrażenia regularne Podsumowanie Proste dopasowanie tekstu Dopasowanie dowolnych znaków Dopasowanie na początku / końcu wiersza Zakres znaków Ćwiczenie napisz wyrażenie, które dopasuje wszystkie imiona: Ala Ola Ula Ela napisz wyrażenie, które dopasuje tekst: Gżegżółka z możliwością zapisania z małej litery, lub bez polskich znaków J. Piersa WSWZ 2013/2014 Laboratorium 05 Wyrażenia regularne Podsumowanie Proste dopasowanie tekstu Dopasowanie dowolnych znaków Dopasowanie na początku / końcu wiersza Zakres znaków Dopasowanie na początku i końcu linii znak . (kropka) jest synonimem dowolnego znaku (w tym również spacji) przykładowo A.a dopasuje Ala, ale również Aga, A8a, A a itd. znak * oznacza ziterowanie (również zerowe!) wystąpienia poprzedzającego go znaku znak + oznacza ziterowanie (przynajmniej jeden raz) wystąpienia poprzedzającego go znaku przykładowo A.*a dopasuje dowolny ciąg znaków zaczynający się od A i kończący na a. J. Piersa WSWZ 2013/2014 Laboratorium 05 Wyrażenia regularne Podsumowanie Proste dopasowanie tekstu Dopasowanie dowolnych znaków Dopasowanie na początku / końcu wiersza Zakres znaków Ćwiczenie dopasuj dowolny ciąg znaków rozpoczynający się od r i kończący na t dopasuj dowolnie długi ciąg liter A dopasuj niepusty ciąg liter A dopasuj ciąg liter zawierający przynajmniej 3 wystąpienia A dowolny ciąg liter A lub B J. Piersa WSWZ 2013/2014 Laboratorium 05 Wyrażenia regularne Podsumowanie Proste dopasowanie tekstu Dopasowanie dowolnych znaków Dopasowanie na początku / końcu wiersza Zakres znaków Dopasowanie na początku i końcu linii znak ^ jest synonimem początku wiersza przykładowo ^root dopasuje tylko takie wystąpienia napisu root które są pierwszym słowem w danej linii podobnie znak $ oznacza koniec wiersza aby wyszukać literalnie należy je poprzedzić za pomocą \ usuń komentarze shellowe (tj od # do końca wiersza) w pliku /etc/sudoers J. Piersa WSWZ 2013/2014 Laboratorium 05 Wyrażenia regularne Podsumowanie Proste dopasowanie tekstu Dopasowanie dowolnych znaków Dopasowanie na początku / końcu wiersza Zakres znaków Ćwiczenie znajdź wystąpienia słowa root na początku linii znajdź wystąpienia słowa bash na końcu linii znajdź puste linie znajdź linie w których jest dokładnie jedna litera usuń komentarze typu // w kodzie J. Piersa WSWZ 2013/2014 Laboratorium 05 Wyrażenia regularne Podsumowanie Proste dopasowanie tekstu Dopasowanie dowolnych znaków Dopasowanie na początku / końcu wiersza Zakres znaków Zakresy nawiasy kwadratowe [] służą do definiowania zbioru lub zakresu znaków do dopasowania np: 199[01234] rok litery małe i wielkie oraz cyfry mogą być łączone w zakresy przez np: ro[a-z]t, litera [A-Z], mam [1-2][0-9] lat znak ^ odwraca dopasowanie, tj dopasuje wszystko co nie jest wymienione: \r[^o]t dopasuje m. in. rat, ret, r t, ale nie rot J. Piersa WSWZ 2013/2014 Laboratorium 05 Wyrażenia regularne Podsumowanie Proste dopasowanie tekstu Dopasowanie dowolnych znaków Dopasowanie na początku / końcu wiersza Zakres znaków Ćwiczenie znajdź liczby między 1000 a 3999 znajdź liczby parzyste większe niż 100 znajdź znajdź słowa składające się tylko z małych lub wielkich liter, rozpoczynające się od r i kończące na t znajdź tagi w kodzie html znajdź tagi url (tj. a) w kodzie html znajdź wiersze, które nie zawierają żadnej litery ani cyfry znajdź komentarze w kodzie Pascalu typu (* ... *) (zał. komentarz mieści się w jednej linijce) J. Piersa WSWZ 2013/2014 Laboratorium 05 Wyrażenia regularne Podsumowanie Proste dopasowanie tekstu Dopasowanie dowolnych znaków Dopasowanie na początku / końcu wiersza Zakres znaków Dopasowanie powtórzeń nawiasy klamrowe {} służą do definiowania ilości oczekiwanych powtórzeń UWAGA: w vi nawiasy muszą być poprzedzone \ np: a{ 8 } dokładnie 8 powtórzeń wzorca poprzedzającego np: (Ala){ 2,5 } między 2 a 5 powtórzeń wzorca np: [a-z]{ 2, } między 2 a 5 powtórzeń wzorca przynajmniej dwa powtórzenia J. Piersa WSWZ 2013/2014 Laboratorium 05 Wyrażenia regularne Podsumowanie Proste dopasowanie tekstu Dopasowanie dowolnych znaków Dopasowanie na początku / końcu wiersza Zakres znaków Ćwiczenie znajdź loginy dwuznakowe w pliku /etc/passwd (za krótkie) znajdź loginy przynajmniej ośmio-znakowe w pliku /etc/passwd znajdź loginy, które zawierają przynajmniej dwie cyfry znajdź adresy IP v4 (skorzystaj z pliku /etc/hosts) znajdź poprawne adresy IP, tj. każda liczba między 0 a 255 J. Piersa WSWZ 2013/2014 Laboratorium 05 Wyrażenia regularne Podsumowanie Proste dopasowanie tekstu Dopasowanie dowolnych znaków Dopasowanie na początku / końcu wiersza Zakres znaków Znaki specjalne aby usunąć specjalne znaczenie znaków należy poprzedzić je backslashem w szczególności \\ dopasuje pojedynczy backslash J. Piersa WSWZ 2013/2014 Laboratorium 05 Wyrażenia regularne Podsumowanie Proste dopasowanie tekstu Dopasowanie dowolnych znaków Dopasowanie na początku / końcu wiersza Zakres znaków Ćwiczenie znajdź w kodzie latex-owym \begin oraz \end znajdź w kodzie latex-owym \begin{} oraz \end{} wraz z argumentami znajdź w swojej stronie domowej adresy do innych stron, leżących na http://www.mat.umk.pl (jeżeli nie ma takich, to dopisz) znajdź w pliku backslash na końcu linii J. Piersa WSWZ 2013/2014 Laboratorium 05 Wyrażenia regularne Podsumowanie Proste dopasowanie tekstu Dopasowanie dowolnych znaków Dopasowanie na początku / końcu wiersza Zakres znaków Grupowanie fragmenty wyrażeń można grupować w nawiasach () przykładowo (123)+ dopasuje powtórzenia wielokrotne napisu np. 123123123, ale już nie np 12131 w vi trzeba je poprzedzić \( \) w vi w zastępowaniu (:s) można do takiego dopasowania odnosić się za pomocą \1 — pierwsze nawiasy do \9 — dziwiąte nawiasy np. :%s/\(Ala\) \(Ola\)/\2 \1/g zamieni napis Y na Ola Ala J. Piersa WSWZ 2013/2014 Laboratorium 05 Wyrażenia regularne Podsumowanie Proste dopasowanie tekstu Dopasowanie dowolnych znaków Dopasowanie na początku / końcu wiersza Zakres znaków Ćwiczenie znajdź ciągi powtórzeń słowa Ala znajdź ciągi skłdające się ze słów Ala lub Ola znajdź studentów matematyki lub informatyki o imionach Jarosław lub Michal J. Piersa WSWZ 2013/2014 Laboratorium 05 Wyrażenia regularne Podsumowanie Po dzisiejszych zajęciach powinienem umieć: konstruować wyrażenia regularne wyszukiwać i zastępować tekst z wykorzystaniem wyrażeń regularnych Dla zainteresowanych: vimregex.com J. Piersa WSWZ 2013/2014 Laboratorium 05