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:
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.
Najprostsze wyrażenie regularne nazywa się "atomem". Może nim być dowolne z poniższych:
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.
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. |
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". |
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.
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 % 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ż: