UTF-8; Pure HTML 4.01; CSS 3;
agent04-04f.shtml 17.00.000
Zmiany: 19.01.2015
Wstęp | | How To | | Słownik | | Menu | | "Sznurki" ]

Podręcznik wyrażeń regularnych

Jeśli jesteś zaawansowanym użytkownikiem rozumiejącym czym są wyrażenia "regularne" możesz użyć tych wysoko wyspecjalizowanych, bazujących na rozwiązaniach z UNIXa, wyrażeń do stworzenia skomplikowanych filtrów. (Jeśli jesteś nowicjuszem, powinieneś najpierw przeczytać rozdział Język wyrażeń Agenta, aby zapoznać się z podstawami wyrażeń.)

Uwaga: Używaj wyrażeń regularnych tylko jeśli jest to naprawdę potrzebne.

Ponieważ wyrażenia regularne wymagają dodatkowej mocy obliczeniowej, zalecamy abyś używał ich tylko jeśli to potrzebne, zwłaszcza w filtrach Usenet i Email, przy których czas potrzebny do przetworzenia filtru może znacząco wpłynąć na wydajność online. Jeśli wszystko czego potrzebujesz to dopasowanie słów, to znacznie szybsze będzie wykorzystanie prostszej składni Agenta bazującej na słowach. Na przykład, poniższy filtr bazujący na słowach:

subject: this is a test

jest znacznie szybszy niż odpowiadający mu z grubsza filtr wykorzystujący wyrażenia regularne

subject: { this is a test }

Ogólnie - powinieneś odkryć, że potrzebujesz używać wyrażeń regularnych tylko, jeśli potrzebujesz:

Jak włączyć wyrażenia regularne do wyrażenia filtru

Oprócz dowolnej sekwencji słów jaka może pojawić się w wyrażeniu filtra, możesz do niego włączyć wyrażenie regularne zawarte w nawiasach klamrowych {...}. Oto przykład wyrażenia regularnego połączonego z sekwencją wyszukiwanych słów:

subject: (this is a test and {[0-9]+})

Powyższy przykład pasuje do wszystkich tematów zawirających frazę "this is a test" ORAZ wyrażenia regularnego składającego się z dowolnej sekwencji jednej lub większej ilości cyfr.

Zasady tworzenia wyrażeń regularnych

Najprostsze wyrażenie regularne nazywa się "atomem". Może nim być dowolne z poniższych:

Kontrolowanie rozmiaru atomu

Możesz zmodyfikować atom poprzez dołączenie do niego specjalnego operatora, który będzie kontrolował do jakiej części pola atom będzie pasował. Specjalne operatory to:

* Oznacza to zero lub większą ilość powtórzeń atomu. Na przykład, wyrażenie {a*} pasuje do zera lub większej ilości powtórzeń litery a.
+ Oznacza to jedno lub większą ilość powtórzeń atomu Na przykład, wyrażenie {[0-9]+} pasuje do jednej lub kilku cyfr.
? Pasuje do zera lub jednego wystąpienia atomu.

Uwaga: Powyższe operatory mają zastosowanie wyłącznie do bezpośrednio poprzedzającego je atomu. Na przykład:

{abc*} pasuje do litery "a", występującej po niej litery "b" i występującej po nich lub nie kilku liter c. Czyli pasuje to do "ab", "abc", "abcc" itd.

Aby zastosować operator do sekwencji atomów - zamknij sekwencję w nawiasach. Na przykład:

{(abc)*} pasuje do braku lub większej ilości powtórzeń sekwencji "abc". Czyli pasuje to do braku sekwencji, "abc", "abcabc", "abcabcabc" itd.

Łączenie atomów

Możesz łączyć atomy w celu stworzenia bardziej skomplikowanych sekwencji. Kilka przykładów:

{forte} pasuje do sekwencji zawierającej literę "f", po niej "o", po niej "r", po niej "t", po niej "e".
{a?b} pasuje do braku lub jednej litery a i występującej po niej jednej literze b. Czyli pasuje to do "ab" i "b"
{[0-9]+/[0-9]+}
pasuje do jednej lub kilku cyfr, po nich znaku "/", a po nim kolejnej sekwencji jednej lub kilku cyfr.
{foo(bar)*} pasuje do sekwencji "foo" i występujących po niej lub nie sekwencjach "bar". Czyli pasuje to do "foo", "foobar", "foobarbar", "foobarbarbar" itd.
{^foo.*bar} pasuje do sekwencji "foo", występujących po niej lub nie dowolnych znakach, a po nich sekwencji "bar". W dodatku "^" oznacza, że pasująca sekwencja musi wystąpić na początku pola.

Alternatywy

Możesz określić alternatywne dopasowanie poprzez połączenie atomów operatorem |. Na przykład:

{a|b} pasuje do litery "a" lub litery "b".
{foo|bar} pasuje do sekwencji "foo" lub skewencji "bar".

Zastosowanie operatorów filtrów do wyrażeń regularnych

Możesz zastosować operatory = (pasuj do całego pola) i % (wrażliwy na wielkość liter) do wyrażeń regularnych w ten sam sposób, w jaki korzystasz z nich we frazach słów.

= operator dokładnego dopasowania

Jeżeli wyrażenie regularne jest poprzedzone przez =, Agent musi dopasować całe pole. Na przykład, następujący filtr:

subject: ={begin.*end}

pasuje do każdego tematu, który zaczyna się znaków "begin", kończy znakami "end" i zawiera dowolne znaki pomiędzy nimi.

Podobnie jak przy frazach słów, kiedy używasz operatora = do pola tematu, Agent zacznie od usunięcia wszystkich prefiksów "Re: ", przed rozpoczęciem dopasowywania. Na przykład, filtr

subject: ={testing}

pasuje zarówno do "testing", jak i "Re: testing". Ale nie będzie pasowało do "more testing", ponieważ operator "=" wymaga dopasowania do całego pola.

% operator wrażliwości na wielkość liter

Operator % powoduje, że całe wyrażenie regularne będzie wrażliwe na wielkość liter. Normalnie wyrażenia regularne Agenta nie są wrażliwe na wielkość liter. Na przykład, filtr

subject: %{[A-Z]+}

pasuje do tematów zawierających sekwencję jednej lub kilku DUŻYCH LITER.

Ale filtr

subject: {[a-z]+}

pasuje do tematów zawierających sekwencję jednej lub kilku liter, w dowolnej kombinacji małych liter i WERSALIKÓW.

Patrz również:


Wstęp | | How To | | Słownik | | Menu | | "Sznurki" ]

Copyright © Yogurt
Editor: Yogurt