1

Temat: Wyłapywanie kodów pocztowych

Witajcie

Mam pewiem problem.

Chciałbym napisać filt który wyłapywałby emaile w których treści znajduje się ciąg cyfr o budowie xx-xxx (chodzi o kody pocztowe)
Jedyny sposób jaki obecnie przychodzi mi do głowy to wpisanie wszystkich kodów pocztowy i zrobienie filtru -> jeśli treść zawiera kod to zrób .....  , ale chyba jest to nierealne zważywszy na ilość kodów pocztowych w Polsce.

Czy ma ktoś może jakiś pomysł jak sprytnie napisać taki filtr ?

Pozdrawiam

2

Odp: Wyłapywanie kodów pocztowych

A nie lepiej użyć wyrażenia regularnego?

3

Odp: Wyłapywanie kodów pocztowych

Oczywiście, wyrażenie regularne musi być użyte jako warunek filtru, czyli Treść pasuje do \d\d\-\d\d\d (lub prościej: Treść pasuje do \d{2}\-\d{3}). Wybór operacji zależy od tego co ma robić ten filtr.

Polecam opis składni wyrażeń regularnych w podręczniku - tam są wyjaśnione znaczenia poszczególnych symboli. Wyrażenia regularne służą właśnie do tego, aby uniknąć wypisywania wprost wszystkich możliwych kombinacji szukanego tekstu.

4

Odp: Wyłapywanie kodów pocztowych

witam

Dziękuje - wszystko działa. A rozdział z wyrażeniami regularnymi przestudiuje b. dokładnie ponieważ naprawde jest w nim sporo cennych informacji

5 (edytowany przez Neon 2006-04-25 17:18:16)

Odp: Wyłapywanie kodów pocztowych

Mam jeszcze jedno pytanie a mianowicie zrobiłem filtr

Treść pasuje do \d\d\-\d\d\d  ale wyłapuje on mi również np nr tel w zapisie xxx-xxx-xxx, lub nawet zapis xxx-xxxxxx też wyłapuje.

wiec zrobiłem filtr :

Treść pasuje do \d{2,2}-\d{3,3}  i niestety nie działa poprawnie, nie wyłapuje kodów xx-xxx. Trzeba w filtrze ograniczyć że może być max dwie cyfry przed znakiem "-" i max trzy cyfry po znaku "-"

Napiszcie gdzie popłeniłem błąd że ten filtr nie działa poprawnie.

6 (edytowany przez Neon 2006-04-25 19:04:41)

Odp: Wyłapywanie kodów pocztowych

Ok już wszystko jasne, źle napisałem filtr

Powinno być "Treść pasuje do \d{2,2}\-\d{3,3}" i teraz działa ok

Kody xx-xxx wypłapuje natomiast zapis inny przepuszcza np xxx-xxx, xxx-xxxx itd

Pozdrawiam

7

Odp: Wyłapywanie kodów pocztowych

Problem w tym, że kod pocztowy może być umieszczony w różnych miejscach w treści listu. Gdy jest wpisany na początku wiersza i za nim następuje spacja, należałoby użyć wyrażenia ^\d{2}\-\d{3}\s. Kod wewnątrz wiersza ograniczony spacjami będzie wykryty przez inne wyrażenie: \s\d{2}\-\d{3}\s. Jeśli chcesz to uogólnić, musisz użyć alternatywy: (^\d{2}\-\d{3}\s)|(\s\d{2}\-\d{3}\s) (albo (^\d{2}\-\d{3}\s|\s\d{2}\-\d{3}\s)). Wypróbuj te warunki, może uda się zbudować coś uniwersalnego.