Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00315 006195 19033395 na godz. na dobę w sumie
Wyrażenia regularne od podstaw - książka
Wyrażenia regularne od podstaw - książka
Autor: Liczba stron: 144
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-283-6058-7 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> techniki programowania
Porównaj ceny (książka, ebook (-30%), audiobook).

Wyrażenia regularne (RegEx) służą do dopasowywania ciągów znaków i manipulowania tekstem. Umożliwiają proste rozwiązywanie wielu złożonych problemów programistycznych. Szczególnie często są wykorzystywane przez twórców aplikacji. Nie istnieje jakiś specjalny język do obsługiwania wyrażeń regularnych, jednak znakomita większość języków programowania wspiera ich stosowanie. Wyrażenia regularne uchodzą za niezrozumiałe i trudne w implementacji, a ich składnia bywa określana jako zawiła i nieintuicyjna. Tymczasem największą barierą okazuje się jasne zrozumienie zagadnienia oraz prawidłowe określenie sposobu wykorzystania wyrażeń regularnych w praktyce.

Ta książka jest znakomitym podręcznikiem, dzięki któremu zaczniesz szybko i poprawnie stosować wyrażenia regularne w praktyce. W przystępny sposób wyjaśniono tu, czym są RegEx i jakie problemy mogą rozwiązać, a także jak należy (i jak nie należy) się nimi posługiwać. Przedstawiono wyrażenia regularne, które faktycznie należy znać, począwszy od prostych porównań tekstu, przez bardziej złożone tematy, takie jak stosowanie referencji wstecznych, oceny warunkowej i procesów przewidywania. Poszczególne zagadnienia wyłożono w metodyczny i prosty sposób, bogato ilustrując materiał praktycznymi, gotowymi do wykorzystania przykładami zaprezentowanymi w różnych językach programowania.

Dzięki tej książce nauczysz się:

RegEx: zrozum i używaj do woli!

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Tytuł oryginału: Learning Regular Expressions Tłumaczenie: Marta Danch-Wierzchowska ISBN: 978-83-283-6058-7 Authorized translation from the English language edition, entitled LEARNING REGULAR EXPRESSIONS, 1st Edition by FORTA, BEN, published by Pearson Education, Inc, publishing as Addison-Wesley Professional, Copyright © 2018 Pearson Education, Inc. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc. POLISH language edition published by Helion SA, Copyright © 2020. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Helion SA dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Helion SA nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Helion SA ul. Kościuszki 1c, 44-100 Gliwice tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/wyrepo Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis treści Lekcja 1 Lekcja 2 Lekcja 3 O autorze ...................................................................7 Wst(cid:246)p ........................................................................9 Wst(cid:246)p do wyra(cid:276)e(cid:254) regularnych ..................................11 Zrozumie(cid:232) potrzeb(cid:246) ........................................................11 Jak wykorzystywane s(cid:241) wyra(cid:276)enia regularne? ....................12 RegEx „znajd(cid:274)” ..........................................................13 RegEx „zamie(cid:254)” ........................................................13 Czym tak naprawd(cid:246) s(cid:241) wyra(cid:276)enia regularne? ....................14 U(cid:276)ycie wyra(cid:276)e(cid:254) regularnych .............................................15 Przed rozpocz(cid:246)ciem ........................................................16 Podsumowanie ...............................................................16 Dopasowywanie pojedynczych znaków .......................17 Dopasowanie dos(cid:228)owne tekstu ........................................17 Ile dopasowa(cid:254)? .........................................................18 Problem z wielko(cid:264)ci(cid:241) liter ...........................................19 Dopasowanie dowolnego znaku .......................................19 Dopasowanie znaków specjalnych ....................................23 Podsumowanie ...............................................................25 Dopasowywanie klasy znaków ...................................27 Dopasowanie jednego z kilku mo(cid:276)liwych znaków ...............27 U(cid:276)ycie klasy z przedzia(cid:228)em znaków ...................................30 Dopasowanie „wszystko oprócz” ......................................34 Podsumowanie ...............................................................35 Kup książkęPoleć książkę 4 Wyra(cid:276)enia regularne od podstaw Lekcja 4 Lekcja 5 Lekcja 6 Lekcja 7 Korzystanie z metaznaków ........................................37 Jeszcze raz o znakach ucieczki ........................................37 Znajdowanie bia(cid:228)ych znaków ............................................40 Znajdowanie klas znaków specjalnych ..............................42 Znajdowanie cyfr (i niecyfr) .........................................42 Znajdowanie znaków alfanumerycznych (i niealfanumerycznych) ............................................43 Znajdowanie bia(cid:228)ych znaków (i niebia(cid:228)ych znaków) ........45 Warto(cid:264)ci w zapisie szesnastkowym i ósemkowym ........45 Znajdowanie znaków z klasy POSIX ..................................46 Podsumowanie ...............................................................48 Powtórzenia .............................................................49 Ile powtórze(cid:254)? ................................................................49 Znalezienie jednego lub kilku znaków ..........................50 Znalezienie zera lub wi(cid:246)cej znaków .............................52 Znalezienie jednego lub (cid:276)adnego znaku .......................54 U(cid:276)ycie interwa(cid:228)ów ...........................................................56 Dok(cid:228)adne dopasowanie interwa(cid:228)u ...............................57 Przedzia(cid:228)y wewn(cid:241)trz interwa(cid:228)ów ...................................58 Przedzia(cid:228)y „co najmniej” .............................................59 Zapobieganie nadmiernemu dopasowaniu ........................61 Podsumowanie ...............................................................63 Dopasowywanie po(cid:228)o(cid:276)enia .........................................65 Wykorzystywanie granic ...................................................65 Korzystanie z granic ........................................................66 Definiowanie kotwic ........................................................69 U(cid:276)ycie trybu wieloliniowego ........................................72 Podsumowanie ...............................................................74 Korzystanie z podwyra(cid:276)e(cid:254) .........................................75 Zrozumie(cid:232) podwyra(cid:276)enia .................................................75 Grupowanie podwyra(cid:276)eniami ............................................76 Zagnie(cid:276)d(cid:276)anie podwyra(cid:276)e(cid:254) ..............................................80 Podsumowanie ...............................................................83 Kup książkęPoleć książkę Lekcja 8 Lekcja 9 Spis tre(cid:264)ci 5 Korzystanie z referencji wstecznych ..........................85 Zrozumie(cid:232) referencje wsteczne ........................................85 Dopasowywanie za pomoc(cid:241) referencji wstecznych .............88 Przeprowadzanie operacji zast(cid:246)powania ...........................91 Konwersja wielko(cid:264)ci znaków .......................................94 Podsumowanie ...............................................................95 Przewidywanie w przód i wstecz ................................97 Wprowadzenie do grup przewidywania ..............................97 Przewidywanie w przód ....................................................98 Przewidywanie wstecz ...................................................100 (cid:227)(cid:241)czenie przewidywania w przód i wstecz ........................103 Negacja grup przewiduj(cid:241)cych .........................................104 Podsumowanie .............................................................106 Lekcja 10 Zagnie(cid:276)d(cid:276)anie warunków ........................................107 Po co zagnie(cid:276)d(cid:276)a(cid:232) warunki? ..........................................107 U(cid:276)ywanie warunków ......................................................108 Warunki dla referencji wstecznych ............................109 Warunki dla przewidywania .......................................111 Podsumowanie .............................................................113 Lekcja 11 Wyra(cid:276)enia regularne jako rozwi(cid:241)zanie popularnych problemów .................115 Adresy IP .....................................................................115 URL ............................................................................116 Pe(cid:228)ny URL ....................................................................118 Adresy e-mail ...............................................................119 Komentarze HTML-a ......................................................120 Komentarze w JavaScripcie ...........................................121 Numery kart kredytowych ..............................................122 Numery telefonów w Ameryce Pó(cid:228)nocnej .........................126 Kody pocztowe w Stanach Zjednoczonych .......................128 Kody pocztowe w Kanadzie ............................................129 Kody pocztowe w Wielkiej Brytanii ..................................130 Numery ubezpieczenia spo(cid:228)ecznego w Stanach Zjednoczonych ...........................................131 Podsumowanie .............................................................132 Kup książkęPoleć książkę 6 Wyra(cid:276)enia regularne od podstaw Dodatek A Wyra(cid:276)enia regularne w popularnych narz(cid:246)dziach i j(cid:246)zykach ......................133 grep ............................................................................133 Java ............................................................................134 JavaScript ....................................................................135 Microsoft .NET .............................................................136 Microsoft SQL Server T-SQL ...........................................137 Microsoft Visual Studio .NET .........................................138 MySQL .........................................................................139 Oracle PL/SQL .............................................................140 Perl .............................................................................140 PHP .............................................................................141 Python .........................................................................142 Kup książkęPoleć książkę 1 Wstęp do wyrażeń regularnych W tej lekcji omówiono, czym są wyrażenia regularne i w jaki sposób mogą być użyteczne. Zrozumie(cid:232) potrzeb(cid:246) Wyrażenia regularne (w skrócie nazywane RegEx lub regexami, od ang. Regular Expressions) są narzędziem i jak wszystkie narzędzia są zaprojektowane, by rozwiązywać konkretne problemy. Najlepszą metodą pozwalającą zrozumieć wyrażenia regularne i zasadę ich działania jest zrozumienie rozwiązywanego przezeń problemu. Oto kilka problemów: (cid:132) Należy znaleźć plik zawierający tekst oko (niezależnie od wielkości znaków), ale bez słów zawierających oko w środku słowa (np. okoliczno(cid:258)ci, woko(cid:239)o, wysoko). (cid:132) Podczas tworzenia strony internetowej trzeba wyświetlić tekst z bazy danych. Tekst może zawierać linki, które mają być hiperłączami na stworzonej stronie (tak, aby zamiast generować po prostu tekst, stworzyć funkcjonalny HTML a href /a ). (cid:132) Podczas tworzenia aplikacji z formularzem dla użytkownika zawierającym adres e-mail należy zweryfikować, czy adres jest prawidłowo sformatowany (czy składnia jest poprawna). Kup książkęPoleć książkę 12 Lekcja 1. Wst(cid:246)p do wyra(cid:276)e(cid:254) regularnych (cid:132) Podczas edycji kodu źródłowego należy zamienić wszystkie wystąpienia size na iSize, ale jedynie słowa size, nie size jako część innego słowa. (cid:132) Należy wyświetlić listę wszystkich plików w komputerze, by znaleźć jedynie te, które zawierają tekst Aplikacja. (cid:132) Do aplikacji są importowane dane, które są oddzielone tabulatorem, a aplikacja wspiera format plików CSV (jeden wiersz w linii, wartości oddzielone przecinkami, każdy wpis ujęty w cudzysłów). (cid:132) Należy znaleźć specyficzny tekst w pliku, ale jedynie w konkretnym miejscu (np. na początku linii albo na końcu zdania). Wszystkie powyższe punkty pokazują przykładowe wyzwania programistyczne i wszystkie mogą być rozwiązane w dowolnym języku, który wspiera przetwarzanie warunkowe i operacje na ciągach znaków. Jak bardzo skomplikowane byłoby jednak rozwiązanie? Należałoby przejrzeć kolejno wszystkie słowa albo znaki, przetwarzając jednocześnie wiele zapytań warunkowych, śledzić wiele flag tak, by wiedzieć, co już zostało znalezione, a co nie, sprawdzać białe znaki i znaki specjalne itd. A wszystko to trzeba by zrobić za każdym razem ręcznie. Albo… można wykorzystać wyrażenia regularne. Każdy z przedstawionych powyżej problemów może być rozwiązany za pomocą stworzonego już wyrażenia — zwięzłego ciągu znaków zawierającego tekst i instrukcje specjalne — które mogłoby wyglądać na przykład tak: \b[Oo][Kk][Oo]\b Uwaga Powy(cid:276)sza linia ju(cid:276) wkrótce stanie si(cid:246) zrozumia(cid:228)a. Jak wykorzystywane s(cid:241) wyra(cid:276)enia regularne? Gdyby przyjrzeć się wypisanym w poprzedniej sekcji problemom, można zauważyć, że każdy z nich można zaklasyfikować jako jeden z dwóch typów: albo informacja jest szukana (znajdź, ang. search), albo informacja jest szukana i edytowana (zamień, ang. replace). W rzeczywistości do tego właśnie wyrażenia regularne są używane: znajdź i zamień. Każde wyrażenie regularne albo dopasowuje tekst (znajdź), albo dopasowuje i zamienia tekst (zamień). Kup książkęPoleć książkę Jak wykorzystywane s(cid:241) wyra(cid:276)enia regularne? 13 RegEx „znajd(cid:274)” Wyrażenia regularne są wykorzystywane w wyszukiwaniach (znajdź), gdy tekst, którego szukają, jest wysoce dynamiczny, jak w przypadku opisanego wcześniej poszukiwania tekstu oko. Na początek należy zlokalizować oko, OKO, Oko albo OkO — to ta łatwa część (wiele narzędzi do wyszukiwania potrafi znaleźć ciągi znaków niezależnie od wielkości). Trudniejsza część to natomiast upewnienie się, że okoliczno(cid:258)ci, woko(cid:239)o i wysoko nie pasują. Niektóre, bardziej wyszukane edytory tekstu mają opcję Dopasuj tylko całe słowa (ang. Match Only the Whole Word), ale wiele edytorów jej nie ma i może nie być możliwe wprowadzenie takiej zmiany w edytowanym dokumencie. Wykorzystując wyrażenia regularne do przeszukiwania, zamiast szukać jedynie tekstu oko rozwiązuje się problem. Wskazówka Jak wygl(cid:241)da rozwi(cid:241)zanie powy(cid:276)szego problemu? Ju(cid:276) si(cid:246) pojawi(cid:228)o w ksi(cid:241)(cid:276)ce — to przyk(cid:228)adowe wyra(cid:276)enie przedstawione wcze(cid:264)niej: \b[Oo][Kk][Oo]\b. Warto zauważyć, że sprawdzanie zgodności (np. czy adres e-mail podany przez użytkownika spełnia to wyrażenie regularne) to również operacją „znajdź”. Sprawdzany jest cały ciąg znaków wprowadzony przez użytkownika (podobnie jak poszukiwania podciągów, co jest typowym zastosowaniem operacji „znajdź”). RegEx „zamie(cid:254)” Operacje typu „znajdź” wyrażeń regularnych są nieprawdopodobnie skuteczne, bardzo praktyczne i nie aż tak trudne do nauczenia. Wiele przykładów i rozdziałów w tej książce dotyczy właśnie ich. Jednak prawdziwa siła regexów tkwi w operacjach typu „zamień”. Poniżej został omówiony znany już przykład z zamianą linków URL na hiperłącza. Na początek należy znaleźć wszystkie linki w tekście (prawdopodobnie szukając ciągów zaczynających się od http:// lub https://, a kończących się przecinkiem, kropką lub znakiem białym). Następnie trzeba zamienić znaleziony link na dwa powtórzenia znalezionego linku wraz z dołączonymi komendami HTML-a. W ten sposób link: http://www.forta.com/ jest zamieniany na: a href= http://www.forta.com http://www.forta.com/ /a Kup książkęPoleć książkę 14 Lekcja 1. Wst(cid:246)p do wyra(cid:276)e(cid:254) regularnych Może się też zdarzyć, że znaleziony link jest tylko adresem, a nie pełnym ciągiem URL: www.forta.com co również należy zamienić na: a href= http://www.forta.com http://www.forta.com/ /a Opcje „znajdź” i „zamień” w większości aplikacji nie obsługują tego typu operacji, ale przy wykorzystaniu wyrażeń regularnych zadanie to staje się nieprawdopodobnie proste. Czym tak naprawd(cid:246) s(cid:241) wyra(cid:276)enia regularne? Teraz, gdy już wiadomo, do czego używa się wyrażeń regularnych, można wprowadzić definicje. Mówiąc wprost, wyrażenia regularne to ciągi znaków, które są wykorzystywane do dopasowania i operowania na tekście. Wyrażenia regularne są tworzone za pomocą języka wyrażeń regularnych, który został opracowany specjalnie po to, by możliwe było wszystko to, o czym zostało tu napisane, i wiele, wiele więcej. Jak każdy inny język, wyrażenia regularne mają specyficzną składnię i instrukcje, których należy się nauczyć, a po to jest ta książka. Język wyrażeń regularnych nie jest w pełni językiem programowania. Zazwyczaj nie jest to nawet program czy pakiet, który można zainstalować i stosować. Najczęściej wyrażenia regularne są minijęzykami wbudowanymi w inne języki lub produkty. Dobra wiadomość jest taka, że obecnie niemal każdy porządny język lub narzędzie wspiera wyrażenia regularne. Zła wiadomość: język wyrażeń regularnych sam w sobie w niczym nie przypomina żadnego innego języka ani narzędzia, w który jest wbudowany. Język wyrażeń regularnych jest językiem samym w sobie — językiem zdecydowanie nie najbardziej intuicyjnym i oczywistym, na jaki można trafić. Uwaga Wyra(cid:276)enia regularne zosta(cid:228)y stworzone na potrzeby matematyki w latach 50. ubieg(cid:228)ego wieku. Wiele lat pó(cid:274)niej g(cid:228)ówne zasady i koncepcje zosta(cid:228)y przeniesione i zaadaptowane do (cid:264)wiata unixowego Perla w poleceniach takich jak grep. Przez d(cid:228)ugi czas wyra(cid:276)enia regularne (wykorzystywane w przypadkach podobnych jak te opisane wcze(cid:264)niej) by(cid:228)y dost(cid:246)pne wy(cid:228)(cid:241)cznie dla w(cid:241)skiego grona spo(cid:228)eczno(cid:264)ci unixowej. Zmieni(cid:228)o si(cid:246) to jednak, a wyra(cid:276)enia regularne s(cid:241) obecnie wspierane w ró(cid:276)nej formie na niemal ka(cid:276)dej platformie obliczeniowej. Kup książkęPoleć książkę U(cid:276)ycie wyra(cid:276)e(cid:254) regularnych 15 Oto funkcjonalne wyrażenia regularne (wkrótce nabiorą one sensu): (cid:132) Ben (cid:132) . (cid:132) www\.forta\.com (cid:132) [a-zA-Z0-9_.]* (cid:132) [Hh]1 .* /[Hh]1 (cid:132) \r\n\r\n (cid:132) \d{3,3}-\d{3,3}-\d{4,4} W tym miejscu należy zauważyć, że składnia to najprostsza część nauki wyrażeń regularnych. Największym wyzwaniem jest opanowanie, w jaki sposób zastosować tę składnię, by przełożyć napotkany problem na rozwiązanie regexowe. Nie wystarczy do tego przeczytać książkę, podobnie bowiem jak w przypadku każdego innego języka, biegłość przychodzi wraz z praktyką. U(cid:276)ycie wyra(cid:276)e(cid:254) regularnych Jak już wspomniano, nie ma programu do wyrażeń regularnych, nie ma aplikacji ani oprogramowania, które można kupić lub pobrać. Język wyrażeń regularnych jest zaimplementowany w wiele programów, języków, komend i środowisk deweloperskich. W jaki sposób używa się wyrażeń regularnych i jak ich funkcjonalność różni się w poszczególnych aplikacjach? Niektóre aplikacje mają opcje w menu i okna dialogowe, za pomocą których można używać wyrażeń regularnych, podczas gdy języki programowania najczęściej dostarczają funkcji, klas lub obiektów, które zawierają funkcjonalności regexów. Co więcej, nie wszystkie implementacje wyrażeń regularnych są jednakowe. Często pojawiają się subtelne (a czasem mniej subtelne) różnice w składni i cechach. Dodatek A, „ Wyrażenia regularne w popularnych narzędziach i językach”, zawiera przydatne szczegóły i uwagi dotyczące wsparcia wyrażeń regularnych w wielu aplikacjach i językach. Przed przejściem do kolejnej lekcji warto zajrzeć do tego dodatku, by nauczyć się specyfiki odnoszącej się do aplikacji lub języka, w którym chce się wykorzystywać wyrażenia regularne. Dla łatwiejszego startu można przejrzeć linki do narzędzi internetowych stworzonych do testowania wyrażeń regularnych zamieszczone na stronie poświęconej oryginalnej wersji tej książki: http://forta.com/books/0134757068/ Kup książkęPoleć książkę 16 Lekcja 1. Wst(cid:246)p do wyra(cid:276)e(cid:254) regularnych Zamieszczone tam przykładowe narzędzia są najczęściej najprostszą metodą eksperymentowania z wyrażeniami regularnymi1. Przed rozpocz(cid:246)ciem Przed rozpoczęciem pracy należy zwrócić uwagę na kilka ważnych kwestii: (cid:132) Podczas stosowania wyrażeń regularnych można zauważyć, że niemal zawsze istnieje kilka możliwych rozwiązań danego problemu. Niektóre są prostsze, inne szybsze, jedne mogą być bardziej kompaktowe, drugie bardziej uniwersalne. Rzadko kiedy rozwiązanie jest po prostu dobre albo złe (oczywiście pod warunkiem, że działa jak należy). (cid:132) Jak już zostało powiedziane, istnieją różnice pomiędzy implementacjami regexów. Przykłady i lekcje przedstawione w tej książce zostały dostosowane możliwie najogólniej do najczęściej wykorzystywanych implementacji, a ewentualne różnice zostały również zaznaczone. (cid:132) Podobnie jak w każdym języku, tak i w tym przypadku kluczem do sukcesu jest praktyka, praktyka i jeszcze raz praktyka. Uwaga Zdecydowanie zalecane jest, aby w trakcie lektury ksi(cid:241)(cid:276)ki testowa(cid:232) ka(cid:276)dy zawarty w niej przyk(cid:228)ad. Podsumowanie Wyrażenia regularne są jednym z najpotężniejszych narzędzi umożliwiających operowanie na tekście. Język wyrażeń regularnych jest wykorzystywany do tworzenia wyrażeń regularnych (stworzony ciąg znaków jest nazywany wyrażeniem regularnym). Wyrażenia regularne są używane w operacjach „znajdź” i „zamień”. 1 Opisane materiały są w języku angielskim — przyp. red. Kup książkęPoleć książkę
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Wyrażenia regularne od podstaw
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: