Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: [email protected]PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ IDZ DO IDZ DO ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG KATALOG KSI¥¯EK KATALOG KSI¥¯EK TWÓJ KOSZYK TWÓJ KOSZYK CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE O NOWOCIACH ZAMÓW INFORMACJE O NOWOCIACH ZAMÓW CENNIK ZAMÓW CENNI K CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE SPIS TRECI SPIS TRECI DODAJ DO KOSZYKA DODAJ DO KOSZYKA KATALOG ONLINE KATALOG ONLINE Wyra¿enia regularne. Leksykon kieszonkowy Autor: Tony Stubblebine T³umaczenie: Piotr Rajca ISBN: 83-7361-075-8 Tytu³ orygina³u: Regular Expressions Pocket Reference Format: B5, stron: 128 Wyra¿enia regularne s¹ niezwykle potê¿nym mechanizmem s³u¿¹cym do dopasowywania i manipulowania tekstami. Choæ s¹ one dostêpne w wielu nowoczesnych jêzykach programowania, to jednak w ka¿dym z nich posiadaj¹ one nieco inne mo¿liwoci, a subtelne ró¿nice w ich sk³adni sprawiaj¹, ¿e nie s¹ one w pe³ni zgodne z wyra¿eniami stosowanymi w innych jêzykach. Wiele jêzyków programowania implementuje wyra¿enia regularne, jednak ¿aden z nich nie robi tego w identyczny sposób. Ksi¹¿ka „Wyra¿enia regularne. Leksykon kieszonkowy” zawiera krótk¹ prezentacjê pojêæ zwi¹zanych z wyra¿eniami regularnymi oraz omówienia ich najczêciej spotykanych implementacji dysponuj¹cych najwiêkszymi mo¿liwociami. Nie bêdziesz ju¿ musia³ rozszyfrowywaæ tajemniczych lub chaotycznych materia³ów informacyjnych! Niniejsza ksi¹¿ka zawiera tabele i porady dotycz¹ce stosowania wyra¿eñ regularnych w jêzykach Perl, Java, Python, C# (i rodowisku .NET), PHP, JavaScript, w bibliotece PCRE oraz kilku programach (vi, awk, egrep oraz sed). Ten leksykon mo¿na potraktowaæ jako dope³nienie doskona³ej i wyczerpuj¹cej ksi¹¿ki powiêconej wyra¿eniom regularnym — „Wyra¿enia regularne”, autorstwa Jeffreya E. F. Friedla. Dziêki niemu bêdziesz móg³ szybko okreliæ sk³adniê oraz szczególne cechy wyra¿eñ regularnych w dowolnym u¿ywanym jêzyku programowania.
Wyrażenia regularne są niezwykle potężnym mechanizmem służącym do dopasowywania i manipulowania tekstami. Choć są one dostępne w wielu nowoczesnych językach programowania, to jednak w każdym z nich posiadają one nieco inne możliwości, a subtelne różnice w ich składni sprawiają, że nie są one w pełni zgodne z wyrażeniami stosowanymi w innych językach. Wiele języków programowania implementuje wyrażenia regularne, jednak żaden z nich nie robi tego w identyczny sposób.
Książka "Wyrażenia regularne. Leksykon kieszonkowy" zawiera krótką prezentację pojęć związanych z wyrażeniami regularnymi oraz omówienia ich najczęściej spotykanych implementacji dysponujących największymi możliwościami. Nie będziesz już musiał rozszyfrowywać tajemniczych lub chaotycznych materiałów informacyjnych! Niniejsza książka zawiera tabele i porady dotyczące stosowania wyrażeń regularnych w językach Perl, Java, Python, C# (i środowisku .NET), PHP, JavaScript, w bibliotece PCRE oraz kilku programach (vi, awk, egrep oraz sed).
Ten leksykon można potraktować jako dopełnienie doskonałej i wyczerpującej książki poświęconej wyrażeniom regularnym – "Wyrażenia regularne", autorstwa Jeffreya E. F. Friedla. Dzięki niemu będziesz mógł szybko określić składnię oraz szczególne cechy wyrażeń regularnych w dowolnym używanym języku programowania.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Inne źródła informacji .............................................................................47
.NET i C# .................................................................................48Obsługiwane metaznaki..........................................................................48
Klasy i interfejsy związane z wykorzystaniemwyrażeń regularnych ...........................................................................53
Inne źródła informacji .............................................................................73
Biblioteka PCRE....................................................................73Obsługiwane metaznaki..........................................................................79
PCRE API ..................................................................................................79
• Wyrażenia regularne, książka Jeffreya E. F. Friedla (wydaw-nictwo Helion) szczegółowo opisuje wyrażenia regularneużywane w języku Perl (strony 203 – 302).
• perlre — to jeden z działów dokumentacji języka Perl, do-stępnych w większości jego dystrybucji.
Java (java.util.regex)W Java 1.4 obsługa wyrażeń regularnych została zaimplemen-towana w formie pakietu ������������, opracowanego przezfirmę Sun. Choć istnieją także inne pakiety obsługujące wyrażeniaregularne, przeznaczone dla wcześniejszych wersji języka, to jed-nak standardem stanie się zapewne pakiet firmy Sun. W pakiecietym wykorzystywany jest tradycyjny mechanizm dopasowywaniaNFA. Wyjaśnienie zasad działania tego mechanizmu możnaznaleźć w rozdziale pod tytułem „Przedstawienie wyrażeń regu-larnych oraz zagadnień dopasowywania wzorców”.
Obsługiwane metaznaki
Pakiet ������������ obsługuje metaznaki oraz metasekwencjeprzedstawione w tabelach od 10. do 14. Bardziej szczegółoweopisy poszczególnych metaznaków można znaleźć w części zaty-tułowanej „Metaznaki, tryby oraz konstrukcje”.
Tabela 10. Reprezentacje znaków
Sekwencja Znaczenie
� Alarm (dzwonek)
� Znak cofnięcia; ���, obsługiwany wyłącznie w klasie znaków
Tabela 12. Punkty zakotwiczenia i warunki zerowej długości
Sekwencja Znaczenie
� Początek łańcucha znaków lub, w trybie wielowierszowym (./��0�012),
miejsce położone bezpośrednio za znakiem nowego wiersza
� Początek łańcucha znaków, niezależnie od używanego trybudopasowywania
3 Koniec łańcucha znaków lub, w trybie wielowierszowym (./��0�012),
miejsce położone bezpośrednio przed dowolnym znakiem nowego wiersza
# Koniec łańcucha znaków lub miejsce położone przed znakiem nowegowiersza kończącym wejściowy łańcuch znaków, niezależnie od używanegotrybu dopasowywania
" Koniec łańcucha znaków, niezależnie od używanego trybu dopasowywania
� Granica słowa
� Dowolne miejsce, które nie jest granicą słowa
4 Początek aktualnego wyszukiwania
567���8 Pozytywne przewidywanie
569���8 Negatywne przewidywanie
5:7���8 Pozytywne przewidywanie wsteczne
5:9���8 Negatywne przewidywanie wsteczne
Tabela 13. Komentarze i modyfikatory trybu
Modyfikator(sekwencja)
Znaktrybu
Znaczenie
-�����/10;$�012)
& Traktuje znak �(jako jedyny znak końca wiersza
-����������� ' Kropka (�) odpowiada dowolnemu znakowi, w tym
także znakowi zakończenia wiersza
-�����./��0�012 < Metaznaki � oraz 3 pasują do miejsc położonych
tuż obok osadzonych znaków końca wiersza
-�������..21�) � Ignoruje odstępy i pozwala na umieszczaniekomentarzy w wyrażeniu regularnym
� Podczas dopasowywania nie będzie uwzględnianawielkość liter należących do kodu ASCII
Tabela 13. Komentarze i modyfikatory trybu — ciąg dalszy
Modyfikator(sekwencja)
Znaktrybu
Znaczenie
-�����/10���2$��)2
� Podczas dopasowywania nie będzie uwzględnianawielkość liter Unicode
-�������1�1$2> Tryb „kanonicznej równoważności” Unicode,w którym znak oraz sekwencja składająca sięze znaku bazowego i znaków łączących o takiejsamej reprezentacji wizualnej są traktowane jakoidentyczne
56����8 Włącza podane tryby (�&<'��) w dalszej części
podwyrażenia
56!����8 Wyłącza podane tryby (�&<'��) w dalszej części
podwyrażenia
56����?��.8 Włącza podane tryby (�&<'��) w wyrażeniu
podanym pomiędzy dwukropkiem i nawiasemzamykającym
56!����?���8 Wyłącza podane tryby (�&<'��) w wyrażeniu
podanym pomiędzy dwukropkiem i nawiasemzamykającym
+�G�,F Dopasowuje podwzorzec co najmniej � razy, jednak nie więcej niż �razy, przy czym nigdy nie jest realizowane nawracanie
Klasy i interfejsy związanez wykorzystaniem wyrażeń regularnych
W języku Java 1.4 wprowadzono dwie podstawowe klasy zwią-zane z obsługą wyrażeń regularnych — �������������-����oraz �������������.���H, jeden wyjątek — �������������-����)I����2��*��J� oraz nowy interfejs — �H�)K���. Ponadtofirma Sun zaktualizowała klasę )���� — aktualnie implementujeona interfejs �H�)K��� i udostępnia podstawowe metody zwią-zane z wykorzystaniem wyrażeń regularnych i dopasowywaniemwzorców. Obiekty -���� to skompilowane wyrażenia regularne,które można dopasowywać do wielu różnych łańcuchów znaków.Z kolei obiekt .���H to wynik dopasowania jednego obiektu-���� do konkretnego łańcucha znaków (lub dowolnego obiektuimplementującego interfejs �H�)K���).
Znaki odwrotnego ukośnika umieszczone w literałach znakowychdefiniujących wyrażenie regularne należy odpowiednio oznaczać(dodatkowym znakiem odwrotnego ukośnika). A zatem � (znaknowego wiersza), umieszczany w literałach łańcuchowych Javy,które mają być użyte jako wyrażenie regularne, należy zapisaćw postaci �.
java.lang.String
Opis
Nowe metody służące do dopasowywania wyrażeń regularnych.
�JJ���(<���H'5)����(���������������8Zwraca wartość ��, jeśli podane ��������������� odpo-wiada całemu łańcuchowi znaków.
)������('*���5)����(���������������8Zwraca tablicę łańcuchów znaków, oddzielających od sie-bie kolejne fragmenty łańcucha odpowiadające podanemu�����������������.
'�����(-����(�J<*��5)����(���������������G(���(�����8Tworzy nowy obiekt -���� na podstawie podanego ������������������ i argumentu �����, którego wartość sta-nowią modyfikatory trybów połączone ze sobą bitowymoperatorem �M.
���(����'58Zwraca modyfikatory trybu danego obiektu -����.
.���H(<���H5�H�)K���(���������������8Tworzy obiekt .���H, który umożliwi dopasowanie tego(�H�') obiektu -���� do podanego ������������������.
Zwraca wartość ��, jeśli podane ��������������� od-powiada całemu łańcuchowi przekazanemu jako ����������������.
)����(*����58Zwraca wyrażenie regularne użyte do utworzenia danegoobiektu -����.
)������('*���5�H�)K���(���������������8Zwraca tablicę łańcuchów znaków, które rozdzielają w poda-nym ����������������� kolejne wystąpienia wyrażenia regu-larnego reprezentowanego przez dany obiekt -����.
)������('*���5�H�)K���(���������������G(���(�����8Zwraca tablicę łańcuchów znaków, które rozdzielają w poda-nym ����������������� �����!�(wystąpień wyrażenia regu-larnego reprezentowanego przez dany obiekt -����.
Reprezentuje mechanizm dopasowujący wyrażenia regularne orazwyniki dopasowania wyrażenia.
Metody
.���H(�**�&M*���<��5)��������(��G()����(������8Dołącza podłańcuch poprzedzający dopasowanie oraz ������� do bufora znakowego, określonego przy użyciu argu-mentu ��.
)��������(�**�&����5)��������(��8Dołącza podłańcuch umieszczony za dopasowaniem do bu-fora znakowego, określonego przy użyciu argumentu ��.
���(�&58Indeks pierwszego znaku za końcem dopasowania.
���(�&5���(�����8Indeks pierwszego znaku znajdującego się za przechwy-coną �����.
�JJ���(���&58Odnajduje kolejny fragment łańcucha pasujący do wyrażeniaregularnego.
�JJ���(���&5���(�������8Odnajduje kolejny fragment łańcucha pasujący do wyrażeniaregularnego, położony za znakiem o indeksie określonymjako �������.
)����(�J�*58Tekst odpowiadający wyrażeniu regularnemu reprezento-wanemu przez dany obiekt -����.
)����(*���L�'�5)����(������8Zastępuje pierwsze dopasowanie podanym ���������.
.���H('�58Przywraca początkowy stan mechanizmu dopasowywania,dzięki czemu kolejna operacja dopasowania rozpocznie sięna samym początku wejściowego łańcucha znaków.
.���H('�5�H�)K���(���������������8Przywraca początkowy stan mechanizmu dopasowywaniai określa, że ma on działać na podanym �����������������.
Te wyjątki są zgłaszane w celu poinformowania o pojawieniu siębłędów składniowych we wzorcu wyrażenia regularnego.
Metody
-����)I����2��*��J�5)����(&'�G()����(��G(���(��&�8Tworzy nowy egzemplarz tej klasy.
)����(���'��*��J�58Zwraca opis błędu.
���(��0�&�58Zwraca indeks wystąpienia błędu.
)����(��.''��58Zwraca wielowierszowy komunikat o błędzie, zawierający jegoopis, indeks, wzorzec wyrażenia regularnego oraz informacjena temat położenia miejsca wystąpienia błędu we wzorcu.
)����(��-����58Zwraca wzorzec wyrażenia regularnego, które zgłosiłowyjątek.
Definiuje interfejs umożliwiający dostęp tylko do odczytu, dziękiktóremu wzorce wyrażeń regularnych można zastosować do se-kwencji znaków.
Metody
�H�(�H���5���(��&N'8Zwraca znak znajdujący się w miejscu określonym przez� ���, przy czym indeks pierwszego znaku ma wartość 0.
���(����H58Zwraca liczbę znaków w sekwencji.
�H�)K���('��)K���5���(*J�"��NG(���(NJ���8Zwraca sekwencję zawierającą znak umieszczony w miejscuo indeksie ������� i kończącą się bezpośrednio przed zna-kiem o indeksie �����.
)����(�J)����58
Zwraca obiekt )����, zawierający reprezentację danej sekwen-cji.