![]() |
![]() |
![]() |
![]() |
Każdy kiedyś staje przed wyzwaniem, jakim jest odnalezienie pliku lub katalogu, o którym już dawno zdążył zapomnieć. Ten mini kurs jest tak zbudowany, aby można było przechodzić od najprostszych przypadków, po całkiem rozbudowane warunki. Zaczniemy od podstaw. Najmniejszą jednostką elementarną w komputerowych tekstach jest znak. Za znak uważamy wszystko to na co składają się wyrazy czy zdania (a wiec: duże i małe llitery, cyfry, kropki, przecinki, średniki, plusy, minusy, !, @, #, $, %, ^, &, *, spacje i inne widoczne znaki). Teraz weźmy sobie taki ciąg: Walasek Przemysław Składa się on z znaków: W, a, l, a, s, e, k, spacji, P, r, z, e, m, y, s, ł, a, w. (oczywiste prawda :-) Zapamiętaj że spacja jest traktowana jak każdy inny znak. Audi 80 Składa się ze znaków: A, u, d, i, spacji, znak 8, znak 0. Zapamiętaj, że w ciągach znaków, liczby nie są widziane jako liczby, ale jako znaki. Wprowadzimy jeszcze jedno pojęcie: podciąg (podłańcuch). Jest to część większego ciągu (łańcucha) znaków, np.: las to podciąg ciągu znaków Walasek. No to tyle, w kwestii formalnej. Aby lepiej przyswoić materiał, będę posługiwać się przykładami które można w całości wklepać do Gravity, i experymentować. Najlepszą do tego celu grupą wydaje się być pl.misc.samochody (jak ja subskrybować, przeczytasz TUTAJ). Dziennie pojawia się tu okolo 1000 listów więc to dobry materiał na testy. Oto jak będziemy testować nasze wyrażenia: 1. Wybierz: NEWSGROUP->DEFINE DISPLAY FILTERS; 2. Wybierz NEW; 3. W pole NAME wpisz np.: Polowanie na Dziadzie M. 4. Wybierz: ADVANCED; 5. Wyrażenia przeze mnie zapodane, wpisuje się w pole CONTAIN PHARSE, oraz obowiązkowo zaznaczyć pole REGULAR EXPRESSION. 6. Po wpisaniu wyrażenia, wciskamy ADD CONDITION 7. Zamykamy poszczególne okna przyciskając klawisz OK. Jeżeli już masz filtr do testów, możesz go zmieniać zamiast tworzyć za każdym razem nowe filtry: 1. Wybierz: NEWSGROUP->DEFINE DISPLAY FILTERS; 2. Wybierz nazwe filtra który chcesz zmienić np.: Polowanie na Dziadzie M. 3. Wybierz: EDIT... 4. Wybierz: ADVANCED; 5. Kliknij w oknie w którym widnieje poprzednie wyrażenie, wpisz nowe wyrażenie w pole lub edytuj stare; 6. Zamykamy poszczególne okna przyciskając klawisz OK. No dobrze tyle tytułem wstępu. Lekcja 1 Temat: Poszukiwanie listów autorstwa ściśle określonej osoby. Zakładamy, że bardzo lubimy czytać wypowiedzi człowieka, który przybrał pseudonim Dziadzia M. Wyrażenie wygląda tak (wszystko co czerwone - można wklepać do Gravity): From contains reg. expr. "Dziadzia" W wyniku takiego wyrażenia zaznaczymy wszystkie posty zawierające w polu FROM łańcuch znaków zawierający podłańcuch "Dziadzia": DZIADZIA dziadzia DzIaDzIa i podobne, składające się z kombinacji małych i dużych liter. Zostaną zaznaczone także takie posty które zawierają ( w polu FROM - oczywiście) np.: Zdziadziały Wnioski z lekcji: Gravity nie rozróżnia dużych i małych liter. Wpisane wyrażenia domyślnie interpretowane są jako podciągi. Aby nie popaść w rozpacz, dodam że możesz zaznaczyć Gravity, aby rozróżniał wielkość liter, ale o tym w Lekcji 2. Jak sobie radzić z wyszukaniem całych wyrazów poznasz w Lekcji 3 Lekcja 2 Temat: Rozróżnianie wielkości liter(małe/duże) Jak pamiętamy, Gravity, jeśli nic się nie zrobi nie rozróżnia liter małych od dużych. Jeżeli zajdzie jednak taka potrzeba ( no choćby w przypadku zignorowania przypadku Zdziadziały z Lekcji 1 ), musimy użyć odpowiedniego znacznika: [ ] From contains reg. expr. "[D]ziadzia" Zaznaczymy w ten sposób: Dziadzia DZIADZIA DziAdziA ZDZIADZIAŁY itp., ale nie zaznaczymy dziadzia Zdziadziały Ponieważ znacznik [ ] sugeruje że litera ujęta w nawiasy musi być konkretnie: duża lub mała. Wniosek z lekcji: [ ] - zwraca uwagę iż ważne jest czy litera jest mała czy duża np.: [a] lub [A]. Lekcja 3 Temat: Szukanie wyrazu będącego na początku przeszukiwanego ciągu. Ponieważ pole FROM ma postać: Dziadzia M Jak widać Na początku ciągu znaków, znajduje się podciąg "Dziadzia M". No to aby uniknąć zaznaczenia czegoś co może zawierać ZDZIADZIAŁY, napiszmy taki warunek, aby podciąg szukany był na początku linii. Do tego służy znacznik <0> (zero w mniej-więcej), np.: From contains reg. expr. "<0>[D]ziadzia M" W ten sposób wybrane zostaną tylko ciągi zawierające na początku: Dziadzia M. z rozróżnieniem na dużą pierwszą literę. Dla formalności, podam tu od razu, sposób na odnalezienie podciągu, znajdującego się na końcu przeszukiwanego ciągu. (Realną potrzebą takiego działania, jest np.: wyszukiwanie plików określonego typu np.: jpg) Subject contains reg. expr. "jpg<~0>" Zaznaczone zostaną wszystkie ciągi kończące się na podciągu jpg (ze wszystkimi jego kombinacjami z wielkością liter) Ten temat powróci przy zabawach z wieloczęściowymi plikami binarnymi. To tyle w części pierwszej, za niedługo ukaże się druga część, a potem trzecia i być może, czwarta :-) |