O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Wyrażenia regularne. Receptury

Book Description

Wyrażenie regularne (ang. regexp) to inaczej wzorzec, który określa zbiór dopasowanych łańcuchów znaków. Brzmi to prosto. Jednak przy pierwszym spotkaniu z wyrażeniami wcale tak nie jest.

Table of Contents

  1. Wyrażenia regularne. Receptury
  2. Przedmowa
    1. Jak nie wpaść w pułapkę wielu różnych wersji
    2. Docelowa grupa odbiorców
    3. Omawiane technologie
    4. Zawartość tej książki
    5. Konwencje obowiązujące w tej książce
    6. Korzystanie z przykładowych fragmentów kodu
    7. Podziękowania
  3. 1. Wprowadzenie do wyrażeń regularnych
    1. Definicja wyrażeń regularnych
      1. Różne odmiany wyrażeń regularnych
      2. Odmiany wyrażeń regularnych prezentowane w tej książce
    2. Przeszukiwanie i zastępowanie tekstu z wykorzystaniem wyrażeń regularnych
      1. Zastępowanie tekstu w różnych odmianach
    3. Narzędzia do pracy z wyrażeniami regularnymi
      1. RegexBuddy
      2. RegexPal
      3. Inne internetowe testery wyrażeń regularnych
        1. regex.larsolavtorvik.com
        2. Nregex
        3. Rubular
        4. myregexp.com
        5. reAnimator
      4. Inne testery wyrażeń regularnych w formie autonomicznych aplikacji
        1. Expresso
        2. Regulator
      5. grep
        1. PowerGREP
        2. Windows Grep
        3. RegexRenamer
      6. Popularne edytory tekstu
  4. 2. Podstawowe techniki budowania wyrażeń regularnych
    1. 2.1. Dopasowywanie stałego tekstu
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Warianty
        1. Blokowe sekwencje ucieczki
        2. Dopasowywanie bez względu na wielkość liter
      5. Patrz także
    2. 2.2. Dopasowywanie znaków niedrukowanych
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Różne formy reprezentacji znaków niedrukowanych
        1. 26 znaków kontrolnych
        2. 7-bitowy zbiór znaków
      5. Patrz także
    3. 2.3. Dopasowywanie jednego z wielu znaków
      1. Problem
      2. Rozwiązanie
        1. „Kalendarz” z literówkami
        2. Cyfra systemu szesnastkowego
        3. Znak spoza systemu szesnastkowego
      3. Analiza
      4. Warianty
        1. Skróty
        2. Ignorowanie wielkości liter
      5. Rozwiązania właściwe poszczególnym odmianom
        1. Odejmowanie klas znaków w odmianie .NET
        2. Łączenie, odejmowanie i wyznaczanie części wspólnych klas znaków w odmianie Javy
      6. Patrz także
    4. 2.4. Dopasowywanie dowolnego znaku
      1. Problem
      2. Rozwiązanie
        1. Dowolny znak oprócz podziału wiersza
        2. Dowolny znak (włącznie z podziałem wiersza)
      3. Analiza
        1. Dowolny znak oprócz podziału wiersza
        2. Dowolny znak (włącznie z podziałem wiersza)
        3. Nadużywanie kropki
      4. Warianty
      5. Patrz także
    5. 2.5. Dopasowywanie czegoś na początku i (lub) końcu wiersza
      1. Problem
      2. Rozwiązanie
        1. Początek tekstu
        2. Koniec tekstu
        3. Początek wiersza
        4. Koniec wiersza
      3. Analiza
        1. Kotwice i wiersze
        2. Początek tekstu
        3. Koniec tekstu
        4. Początek wiersza
        5. Koniec wiersza
        6. Dopasowania zerowej długości
      4. Warianty
      5. Patrz także
    6. 2.6. Dopasowywanie całych wyrazów
      1. Problem
      2. Rozwiązanie
        1. Granice wyrazów
        2. Poza granicami wyrazów
      3. Analiza
        1. Granice wyrazów
        2. Poza granicami wyrazów
      4. Znaki wyrazów
      5. Patrz także
    7. 2.7. Punkty kodowe, właściwości, bloki i alfabety standardu Unicode
      1. Problem
      2. Rozwiązanie
        1. Punkt kodowy standardu Unicode
        2. Właściwość (kategoria) standardu Unicode
        3. Blok standardu Unicode
        4. Alfabet standardu Unicode
        5. Grafem standardu Unicode
      3. Analiza
        1. Punkt kodowy standardu Unicode
        2. Właściwość lub kategoria standardu Unicode
        3. Blok standardu Unicode
        4. Alfabet standardu Unicode
        5. Grafem standardu Unicode
      4. Warianty
        1. Wariant zanegowany
        2. Klasy znaków
        3. Wskazywanie wszystkich znaków
      5. Patrz także
    8. 2.8. Dopasowywanie jednego z wielu alternatywnych wyrażeń
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    9. 2.9. Grupowanie i przechwytywanie fragmentów dopasowań
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Warianty
        1. Grupy nieprzechwytujące
        2. Grupa z modyfikatorami trybu
      5. Patrz także
    10. 2.10. Ponowne dopasowanie już dopasowanego tekstu
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    11. 2.11. Przechwytywanie i nazywanie fragmentów dopasowań
      1. Problem
      2. Rozwiązanie
        1. Nazwany przechwyt
        2. Nazwane odwołania wstecz
      3. Analiza
        1. Nazwany przechwyt
        2. Nazwane odwołania wstecz
      4. Patrz także
    12. 2.12. Powtarzanie fragmentu wyrażenia regularnego określoną liczbę razy
      1. Problem
      2. Rozwiązanie
        1. Gugol
        2. Liczba szesnastkowa
        3. Liczba szesnastkowa
        4. Liczba zmiennoprzecinkowa
      3. Analiza
        1. Stała liczba powtórzeń
        2. Zmienna liczba powtórzeń
        3. Powtarzanie tokenu w nieskończoność
        4. Dopasowywanie opcjonalne
        5. Powtarzanie grup
      4. Patrz także
    13. 2.13. Wybieranie minimalnego lub maksymalnego z powtórzeń
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    14. 2.14. Eliminowanie niepotrzebnych nawrotów
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    15. 2.15. Zapobieganie niekończącym się powtórzeniom
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Warianty
      5. Patrz także
    16. 2.16. Testowanie dopasowań bez ich dodawania do właściwego dopasowania
      1. Problem
      2. Rozwiązanie
      3. Analiza
        1. Wyszukiwanie
        2. Wyszukiwanie negatywne
        3. Różne poziomy wyszukiwania wstecz
        4. Dwukrotne dopasowywanie tego samego tekstu
        5. Wyszukiwanie jest operacją atomową
      4. Rozwiązanie bez wyszukiwania
      5. Patrz także
    17. 2.17. Dopasowywanie jednej lub dwóch alternatyw zależnie od pewnego warunku
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    18. 2.18. Dodawanie komentarzy do wyrażeń regularnych
      1. Problem
      2. Rozwiązanie
      3. Analiza
        1. Tryb swobodnego stosowania znaków białych
        2. W Javie tryb swobodnego stosowania znaków białych jest stosowany dla klas znaków
      4. Warianty
    19. 2.19. Umieszczanie stałego tekstu w tekście docelowym operacji wyszukiwania i zastępowania
      1. Problem
      2. Rozwiązanie
      3. Analiza
        1. Kiedy i jak stosować symbole ucieczki w tekście docelowym operacji zastępowania
        2. .NET i JavaScript
        3. Java
        4. PHP
        5. Perl
        6. Python i Ruby
        7. Inne reguły ucieczki dla stałych łańcuchowych
      4. Patrz także
    20. 2.20. Umieszczanie dopasowania wyrażenia regularnego w tekście docelowym operacji wyszukiwania i zastępowania
      1. Problem
      2. Rozwiązanie
        1. Wyrażenie regularne
        2. Tekst docelowy
      3. Analiza
      4. Patrz także
    21. 2.21. Umieszczanie fragmentu wyrażenia regularnego w tekście docelowym operacji wyszukiwania i zastępowania
      1. Problem
      2. Rozwiązanie
        1. Wyrażenie regularne
        2. Tekst docelowy
      3. Analiza
        1. Zastępowanie z wykorzystaniem grup przechwytujących
        2. Przechwyty o numerze $10 i wyższych
        3. Odwołania do nieistniejących grup
      4. Rozwiązanie z wykorzystaniem przechwytów nazwanych
        1. Wyrażenie regularne
        2. Tekst docelowy
        3. Odmiany obsługujące przechwyty nazwane
      5. Patrz także
    22. 2.22. Umieszczanie kontekstu dopasowania w tekście docelowym operacji wyszukiwania i zastępowania
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
  5. 3. Programowanie z wykorzystaniem wyrażeń regularnych
    1. Języki programowania i odmiany wyrażeń regularnych
      1. Języki programowania omawiane w tym rozdziale
      2. Inne języki programowania
    2. 3.1. Stałe wyrażenia regularne w kodzie źródłowym
      1. Problem
      2. Rozwiązanie
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Analiza
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      4. Patrz także
    3. 3.2. Importowanie biblioteki wyrażeń regularnych
      1. Problem
      2. Rozwiązanie
        1. C#
        2. VB.NET
        3. Java
        4. Python
      3. Analiza
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
    4. 3.3. Tworzenie obiektów wyrażeń regularnych
      1. Problem
      2. Rozwiązanie
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. Perl
        6. Python
        7. Ruby
      3. Analiza
        1. .NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      4. Kompilowanie wyrażeń regularnych do wspólnego języka pośredniego (CIL)
        1. C#
        2. VB.NET
      5. Analiza
      6. Patrz także
    5. 3.4. Ustawianie opcji wyrażeń regularnych
      1. Problem
      2. Rozwiązanie
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Analiza
        1. .NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      4. Dodatkowe opcje właściwe poszczególnym językom programowania
        1. .NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      5. Patrz także
    6. 3.5. Sprawdzanie możliwości odnalezienia dopasowania w przetwarzanym łańcuchu
      1. Problem
      2. Rozwiązanie
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Analiza
        1. C# i VB.NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      4. Patrz także
    7. 3.6. Sprawdzanie, czy dane wyrażenie regularne pasuje do całego przetwarzanego łańcucha
      1. Problem
      2. Rozwiązanie
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Analiza
        1. C# i VB.NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      4. Patrz także
    8. 3.7. Uzyskiwanie dopasowanego tekstu
      1. Problem
      2. Rozwiązanie
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Analiza
        1. .NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      4. Patrz także
    9. 3.8. Określanie pozycji i długości dopasowania
      1. Problem
      2. Rozwiązanie
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Analiza
        1. .NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      4. Patrz także
    10. 3.9. Uzyskiwanie części dopasowanego tekstu
      1. Problem
      2. Rozwiązanie
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Analiza
        1. .NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      4. Przechwyt nazwany
        1. C#
        2. VB.NET
        3. PHP
        4. Perl
        5. Python
      5. Patrz także
    11. 3.10. Uzyskiwanie listy wszystkich dopasowań
      1. Problem
      2. Rozwiązanie
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Analiza
        1. .NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      4. Patrz także
    12. 3.11. Iteracyjne przeszukiwanie wszystkich dopasowań
      1. Problem
      2. Rozwiązanie
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Analiza
        1. .NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      4. Patrz także
    13. 3.12. Filtrowanie dopasowań w kodzie proceduralnym
      1. Problem
      2. Rozwiązanie
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Analiza
      4. Patrz także
    14. 3.13. Odnajdywanie dopasowania w ramach innego dopasowania
      1. Problem
      2. Rozwiązanie
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Analiza
      4. Patrz także
    15. 3.14. Zastępowanie wszystkich dopasowań
      1. Problem
      2. Rozwiązanie
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Analiza
        1. .NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      4. Patrz także
    16. 3.15. Zastępowanie dopasowań z wykorzystaniem ich fragmentów
      1. Problem
      2. Rozwiązanie
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Analiza
        1. .NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      4. Przechwyty nazwane
        1. C#
        2. VB.NET
        3. PHP
        4. Perl
        5. Python
        6. Ruby
      5. Patrz także
    17. 3.16. Zastępowanie dopasowań tekstem docelowym generowanym na poziomie kodu proceduralnego
      1. Problem
      2. Rozwiązanie
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Analiza
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      4. Patrz także
    18. 3.17. Zastępowanie wszystkich dopasowań w ramach dopasowań do innego wyrażenia regularnego
      1. Problem
      2. Rozwiązanie
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Analiza
      4. Patrz także
    19. 3.18. Zastępowanie wszystkich dopasowań pomiędzy dopasowaniami do innego wyrażenia regularnego
      1. Problem
      2. Rozwiązanie
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Analiza
        1. Perl i Ruby
        2. Python
      4. Patrz także
    20. 3.19. Dzielenie łańcucha
      1. Problem
      2. Rozwiązanie
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Analiza
        1. C# i VB.NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      4. Patrz także
    21. 3.20. Dzielenie łańcucha z zachowaniem dopasowań do wyrażenia regularnego
      1. Problem
      2. Rozwiązanie
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Analiza
        1. .NET
        2. Java
        3. JavaScript
        4. PHP
        5. Perl
        6. Python
        7. Ruby
      4. Patrz także
    22. 3.21. Przeszukiwanie kolejnych wierszy
      1. Problem
      2. Rozwiązanie
        1. C#
        2. VB.NET
        3. Java
        4. JavaScript
        5. PHP
        6. Perl
        7. Python
        8. Ruby
      3. Analiza
      4. Patrz także
  6. 4. Weryfikacja i formatowanie danych
    1. 4.1. Weryfikacja adresów poczty elektronicznej
      1. Problem
      2. Rozwiązanie
        1. Proste
        2. Proste z ograniczeniami odnośnie do znaków
        3. Proste ze wszystkimi znakami
        4. Bez początkowych, końcowych i następujących po sobie kropek
        5. Domena najwyższego poziomu musi składać się z co najmniej dwóch, ale nie więcej niż sześciu liter
      3. Analiza
        1. Wprowadzenie do adresów poczty elektronicznej
        2. Składnia wyrażenia regularnego
        3. Konstruowanie wyrażenia regularnego krok po kroku
      4. Warianty
      5. Patrz także
    2. 4.2. Weryfikacja i formatowanie numerów telefonów stosowanych w Ameryce Północnej
      1. Problem
      2. Rozwiązanie
        1. Wyrażenie regularne
        2. Tekst docelowy
        3. C#
        4. JavaScript
        5. Pozostałe języki programowania
      3. Analiza
      4. Warianty
        1. Eliminowanie nieprawidłowych numerów telefonów
        2. Odnajdywanie numerów telefonów w dokumentach
        3. Dopuszczanie początkowego kodu równego 1
        4. Dopuszczanie siedmiocyfrowych numerów telefonów
      5. Patrz także
    3. 4.3. Weryfikacja międzynarodowych numerów telefonów
      1. Problem
      2. Rozwiązanie
        1. Wyrażenie regularne
        2. JavaScript
        3. Pozostałe języki programowania
      3. Analiza
      4. Warianty
        1. Weryfikacja międzynarodowych numerów telefonów w formacie EPP
      5. Patrz także
    4. 4.4. Weryfikacja tradycyjnych formatów zapisu daty
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Warianty
      5. Patrz także
    5. 4.5. Bardziej restrykcyjna weryfikacja tradycyjnych formatów zapisu daty
      1. Problem
      2. Rozwiązanie
        1. C#
        2. Perl
        3. Same wyrażenia regularne
      3. Analiza
      4. Patrz także
    6. 4.6. Weryfikacja tradycyjnych formatów godziny
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Warianty
      5. Patrz także
    7. 4.7. Weryfikacja zgodności daty i godziny ze standardem ISO 8601
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    8. 4.8. Ograniczanie danych wejściowych do znaków alfanumerycznych
      1. Problem
      2. Rozwiązanie
        1. Wyrażenie regularne
        2. Ruby
        3. Pozostałe języki programowania
      3. Analiza
      4. Warianty
        1. Ograniczanie danych wejściowych do znaków ASCII
        2. Ograniczanie danych wejściowych do niekontrolnych znaków ASCII oraz znaków podziału wiersza
        3. Ograniczanie danych wejściowych do wspólnych znaków stron kodowych ISO-8859-1 i Windows-1252
        4. Ograniczanie danych wejściowych do znaków alfanumerycznych dowolnego języka
      5. Patrz także
    9. 4.9. Ograniczanie długości dopasowywanego tekstu
      1. Problem
      2. Rozwiązanie
        1. Wyrażenie regularne
        2. Perl
        3. Pozostałe języki programowania
      3. Analiza
      4. Warianty
        1. Ograniczanie długości dowolnego wzorca
        2. Ograniczanie długości łańcucha pozbawionego znaków białych
        3. Ograniczanie liczby wyrazów
      5. Patrz także
    10. 4.10. Ograniczanie liczby wierszy w przetwarzanym tekście
      1. Problem
      2. Rozwiązanie
        1. Wyrażenie regularne
        2. PHP (PCRE)
        3. Pozostałe języki programowania
      3. Analiza
      4. Warianty
        1. Praca z ezoterycznymi separatorami wierszy
      5. Patrz także
    11. 4.11. Weryfikacja pozytywnych odpowiedzi
      1. Problem
      2. Rozwiązanie
        1. Wyrażenie regularne
        2. JavaScript
        3. Pozostałe języki programowania
      3. Analiza
      4. Patrz także
    12. 4.12. Weryfikacja numerów ubezpieczenia społecznego (SSN) stosowanych w Stanach Zjednoczonych
      1. Problem
      2. Rozwiązanie
        1. Wyrażenie regularne
        2. Python
        3. Pozostałe języki programowania
      3. Analiza
      4. Warianty
        1. Odnajdywanie numerów SSN w dokumentach
      5. Patrz także
    13. 4.13. Weryfikacja numerów ISBN
      1. Problem
      2. Rozwiązanie
        1. Wyrażenia regularne
        2. JavaScript
        3. Python
        4. Pozostałe języki programowania
      3. Analiza
        1. Suma kontrolna numeru ISBN-10
        2. Suma kontrolna numeru ISBN-13
      4. Warianty
        1. Odnajdywanie numerów ISBN w dokumentach
        2. Eliminowanie nieprawidłowych numerów ISBN
      5. Patrz także
    14. 4.14. Weryfikacja amerykańskich kodów pocztowych
      1. Problem
      2. Rozwiązanie
        1. Wyrażenie regularne
        2. VB.NET
        3. Pozostałe języki programowania
      3. Analiza
      4. Patrz także
    15. 4.15. Weryfikacja kanadyjskich kodów pocztowych
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    16. 4.16. Weryfikacja brytyjskich kodów pocztowych
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    17. 4.17. Odnajdywanie adresów wskazujących skrytki pocztowe
      1. Problem
      2. Rozwiązanie
        1. Wyrażenie regularne
        2. C#
        3. Pozostałe języki programowania
      3. Analiza
      4. Patrz także
    18. 4.18. Zmiana formatów nazwisk z „imię nazwisko” na „nazwisko, imię”
      1. Problem
      2. Rozwiązanie
        1. Wyrażenie regularne
        2. Tekst docelowy
        3. JavaScript
        4. Pozostałe języki programowania
      3. Analiza
      4. Warianty
        1. Partykuły nazwisk z predefiniowanej listy umieszczane na początku generowanego łańcucha
    19. 4.19. Weryfikacja numerów kart kredytowych
      1. Problem
      2. Rozwiązanie
        1. Eliminowanie spacji i myślników
        2. Weryfikacja numeru
        3. Przykład strony internetowej z kodem JavaScriptu
      3. Analiza
        1. Eliminowanie spacji i myślników
        2. Weryfikacja numeru
        3. Integracja tego rozwiązania z kodem strony internetowej
      4. Dodatkowa weryfikacja z wykorzystaniem algorytmu Luhna
    20. 4.20. Europejskie numery płatników podatku VAT
      1. Problem
      2. Rozwiązanie
        1. Eliminowanie znaków białych i znaków interpunkcyjnych
        2. Weryfikacja numeru płatnika
      3. Analiza
        1. Eliminowanie znaków białych i znaków interpunkcyjnych
        2. Weryfikacja numeru płatnika
      4. Warianty
      5. Patrz także
  7. 5. Wyrazy, wiersze i znaki specjalne
    1. 5.1. Odnajdywanie określonego wyrazu
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    2. 5.2. Odnajdywanie dowolnego wyrazu ze zbioru słów
      1. Problem
      2. Rozwiązanie
        1. Z wykorzystaniem wyrażeń alternatywnych
        2. Przykład rozwiązania dla JavaScriptu
      3. Analiza
        1. Z wykorzystaniem wyrażeń alternatywnych
        2. Przykład rozwiązania dla JavaScriptu
      4. Patrz także
    3. 5.3. Odnajdywanie podobnych wyrazów
      1. Problem
      2. Rozwiązanie
        1. Color lub colour
        2. Bat, cat lub rat
        3. Słowa zakończone sekwencją „phobia”
        4. Steve, Steven lub Stephen
        5. Różne formy zapisu „regular expression”
      3. Analiza
        1. Użycie granic wyrazów wymuszających dopasowywanie całych słów
        2. Color lub colour
        3. Bat, cat lub rat
        4. Słowa zakończone sekwencją „phobia”
        5. Steve, Steven lub Stephen
        6. Różne formy zapisu „regular expression”
      4. Patrz także
    4. 5.4. Odnajdywanie wszystkich wyrazów z wyjątkiem określonego słowa
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Warianty
        1. Odnajdywanie wyrazów, które nie zawierają innego słowa
      5. Patrz także
    5. 5.5. Odnajdywanie dowolnego słowa, po którym nie występuje pewien wyraz
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Warianty
      5. Patrz także
    6. 5.6. Odnajdywanie dowolnego słowa, przed którym nie występuje pewien wyraz
      1. Problem
      2. Rozwiązanie
        1. Wyszukiwanie wstecz
        2. Słowa, przed którymi nie występuje „cat”
        3. Symulowanie wyszukiwania wstecz
      3. Analiza
        1. Wyszukiwanie wstecz stałej, skończonej i nieskończonej długości
        2. Symulowanie wyszukiwania wstecz
      4. Warianty
      5. Patrz także
    7. 5.7. Odnajdywanie wyrazów znajdujących się w pobliżu
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Warianty
        1. Użycie wyrażenia warunkowego
        2. Dopasowywanie trzech lub większej liczby wyrazów znajdujących się w pobliżu
        3. Wiele wyrazów w dowolnej odległości od siebie
      5. Patrz także
    8. 5.8. Odnajdywanie powtarzających się wyrazów
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    9. 5.9. Usuwanie powtarzających się wierszy
      1. Problem
      2. Rozwiązanie
        1. Pierwsza opcja: Sortowanie wierszy i usuwanie sąsiadujących powtórzeń
        2. Druga opcja: Zachowywanie ostatniego wystąpienia każdego powtarzającego się wiersza w nieposortowanym pliku
        3. Trzecia opcja: Zachowywanie pierwszego wystąpienia każdego powtarzającego się wiersza w nieposortowanym pliku
      3. Analiza
        1. Pierwsza opcja: Sortowanie wierszy i usuwanie sąsiadujących powtórzeń
        2. Druga opcja: Zachowywanie ostatniego wystąpienia każdego powtarzającego się wiersza w nieposortowanym pliku
        3. Trzecia opcja: Zachowywanie pierwszego wystąpienia każdego powtarzającego się wiersza w nieposortowanym pliku
      4. Patrz także
    10. 5.10. Dopasowywanie kompletnych wierszy zawierających określony wyraz
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Warianty
      5. Patrz także
    11. 5.11. Dopasowywanie kompletnych wierszy, które nie zawierają określonego słowa
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    12. 5.12. Obcinanie początkowych i końcowych znaków białych
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Warianty
      5. Patrz także
    13. 5.13. Zastępowanie powtarzających się znaków białych pojedynczą spacją
      1. Problem
      2. Rozwiązanie
        1. Porządkowanie wszystkich znaków białych
        2. Porządkowanie poziomych znaków białych
      3. Analiza
        1. Porządkowanie wszystkich znaków białych
        2. Porządkowanie poziomych znaków białych
      4. Patrz także
    14. 5.14. Stosowanie znaków ucieczki dla metaznaków wyrażeń regularnych
      1. Problem
      2. Rozwiązanie
        1. Rozwiązania wbudowane
        2. Wyrażenie regularne
        3. Tekst docelowy
        4. Przykład funkcji JavaScriptu
      3. Analiza
      4. Warianty
      5. Patrz także
  8. 6. Liczby
    1. 6.1. Liczby całkowite
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    2. 6.2. Liczby szesnastkowe
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    3. 6.3. Liczby binarne
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    4. 6.4. Usuwanie początkowych zer
      1. Problem
      2. Rozwiązanie
        1. Wyrażenie regularne
        2. Tekst docelowy
        3. Uzyskiwanie liczb w Perlu
        4. Eliminowanie początkowych zer w PHP
      3. Analiza
      4. Patrz także
    5. 6.5. Liczby należące do określonego przedziału
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    6. 6.6. Liczby szesnastkowe należące do określonego przedziału
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    7. 6.7. Liczby zmiennoprzecinkowe
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    8. 6.8. Liczby z separatorem tysiąca
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    9. 6.9. Liczby rzymskie
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Konwersja liczb rzymskich na dziesiętne liczby arabskie
      5. Patrz także
  9. 7. Adresy URL, ścieżki i adresy internetowe
    1. 7.1. Weryfikacja adresów URL
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    2. 7.2. Odnajdywanie adresów URL w dłuższym tekście
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    3. 7.3. Odnajdywanie w dłuższym tekście adresów URL otoczonych cudzysłowami
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    4. 7.4. Odnajdywanie w dłuższym tekście adresów URL z nawiasami okrągłymi
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    5. 7.5. Umieszczanie adresów URL w łączach
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    6. 7.6. Weryfikacja nazw URN
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    7. 7.7. Weryfikacja poprawności adresów URL według ogólnych reguł
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    8. 7.8. Wyodrębnianie schematu z adresu URL
      1. Problem
      2. Rozwiązanie
        1. Wyodrębnianie schematu z adresu URL, o którym wiadomo, że jest prawidłowy
        2. Wyodrębnianie schematu przy okazji weryfikacji adresu URL
      3. Analiza
      4. Patrz także
    9. 7.9. Wyodrębnianie nazwy użytkownika z adresu URL
      1. Problem
      2. Rozwiązanie
        1. Wyodrębnianie nazwy użytkownika z adresu URL, o którym wiadomo, że jest prawidłowy
        2. Wyodrębnianie nazwy użytkownika przy okazji weryfikacji adresu URL
      3. Analiza
      4. Patrz także
    10. 7.10. Wyodrębnianie nazwy hosta z adresu URL
      1. Problem
      2. Rozwiązanie
        1. Wyodrębnianie nazwy hosta z adresu URL, o którym wiadomo, że jest prawidłowy
        2. Wyodrębnianie nazwy hosta przy okazji weryfikacji adresu URL
      3. Analiza
      4. Patrz także
    11. 7.11. Wyodrębnianie numeru portu z adresu URL
      1. Problem
      2. Rozwiązanie
        1. Wyodrębnianie numeru portu z adresu URL, o którym wiadomo, że jest prawidłowy
        2. Wyodrębnianie numeru portu przy okazji weryfikacji adresu URL
      3. Analiza
      4. Patrz także
    12. 7.12. Wyodrębnianie ścieżki z adresu URL
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    13. 7.13. Wyodrębnianie zapytania z adresu URL
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    14. 7.14. Wyodrębnianie fragmentu z adresu URL
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    15. 7.15. Weryfikacja nazw domen
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    16. 7.16. Dopasowywanie adresów IPv4
      1. Problem
      2. Rozwiązanie
        1. Wyrażenie regularne
        2. Perl
      3. Analiza
      4. Patrz także
    17. 7.17. Dopasowywanie adresów IPv6
      1. Problem
      2. Rozwiązanie
        1. Notacja standardowa
        2. Notacja mieszana
        3. Notacja standardowa lub mieszana
        4. Notacja skompresowana
        5. Skompresowana notacja mieszana
        6. Notacja standardowa, mieszana lub skompresowana
      3. Analiza
        1. Notacja standardowa
        2. Notacja mieszana
        3. Notacja standardowa lub mieszana
        4. Notacja skompresowana
        5. Skompresowana notacja mieszana
        6. Notacja standardowa, mieszana lub skompresowana
      4. Patrz także
    18. 7.18. Weryfikacja ścieżek systemu Windows
      1. Problem
      2. Rozwiązanie
        1. Ścieżki z literami napędów
        2. Ścieżki z literami napędów i ścieżki UNC
        3. Ścieżki z literami napędów, ścieżki względne i ścieżki UNC
      3. Analiza
        1. Ścieżki z literami napędów
        2. Ścieżki z literami napędów i ścieżki UNC
        3. Ścieżki z literami napędów, ścieżki względne i ścieżki UNC
      4. Patrz także
    19. 7.19. Dzielenie ścieżek systemu Windows na części składowe
      1. Problem
      2. Rozwiązanie
        1. Ścieżki z literami napędów
        2. Ścieżki z literami napędów i ścieżki UNC
        3. Ścieżki z literami napędów, ścieżki względne i ścieżki UNC
      3. Analiza
        1. Ścieżki z literami napędów
        2. Ścieżki z literami napędów i ścieżki UNC
        3. Ścieżki z literami napędów, ścieżki względne i ścieżki UNC
      4. Patrz także
    20. 7.20. Wyodrębnianie litery dysku ze ścieżki systemu Windows
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    21. 7.21. Wyodrębnianie serwera i zasobu ze ścieżki UNC
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    22. 7.22. Wyodrębnianie folderu ze ścieżki systemu operacyjnego Windows
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    23. 7.23. Wyodrębnianie nazwy pliku ze ścieżki systemu Windows
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    24. 7.24. Wyodrębnianie rozszerzenia pliku ze ścieżki systemu Windows
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    25. 7.25. Usuwanie nieprawidłowych znaków z nazw plików
      1. Problem
      2. Rozwiązanie
        1. Wyrażenie regularne
        2. Tekst docelowy
      3. Analiza
      4. Patrz także
  10. 8. Języki znaczników i formaty wymiany danych
    1. Hipertekstowy język znaczników (HTML)
    2. Rozszerzalny hipertekstowy język znaczników (XHTML)
    3. Rozszerzalny język znaczników (XML)
    4. Wartości oddzielone przecinkami (CSV)
    5. Pliki inicjalizacji (INI)
    6. 8.1. Odnajdywanie znaczników XML-a
      1. Problem
      2. Rozwiązanie
        1. Uproszczone rozwiązanie
        2. Dopuszczanie występowania znaku > w wartościach atrybutów
        3. Znaczniki (X)HTML-a (rozwiązanie elastyczne)
        4. Znaczniki (X)HTML-a (rozwiązanie restrykcyjne)
        5. Znaczniki XML-a (rozwiązanie restrykcyjne)
      3. Analiza
        1. Kilka słów ostrzeżenia
        2. Uproszczone rozwiązanie
        3. Dopuszczanie występowania znaku > w wartościach atrybutów
        4. Znaczniki (X)HTML-a (rozwiązanie elastyczne)
          1. Znaczniki otwierające
          2. Znaczniki samozamykające
          3. Znaczniki otwierające i samozamykające
          4. Znaczniki zamykające
        5. Znaczniki (X)HTML-a (rozwiązanie restrykcyjne)
          1. Znaczniki otwierające i samozamykające
          2. Znaczniki zamykające
        6. Znaczniki XML-a (rozwiązanie restrykcyjne)
          1. Znaczniki otwierające i samozamykające
          2. Znaczniki zamykające
        7. Pomijanie nietypowych sekcji (X)HTML-a i XML-a
      4. Warianty
        1. Dopasowywanie prawidłowych znaczników HTML-a 4
      5. Patrz także
    7. 8.2. Zastępowanie znaczników <b> znacznikami <strong>
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Warianty
        1. Zastępowanie listy znaczników
      5. Patrz także
    8. 8.3. Usuwanie wszystkich znaczników XML-a z wyjątkiem znaczników <em> i <strong>
      1. Problem
      2. Rozwiązanie
        1. Pierwsze rozwiązanie: Dopasowywanie wszystkich znaczników poza <em> i <strong>
        2. Drugie rozwiązanie: Dopasowywanie wszystkich znaczników poza <em> i <strong> oraz wszystkich znaczników obejmujących atrybuty
      3. Analiza
      4. Warianty
        1. Biała lista atrybutów
      5. Patrz także
    9. 8.4. Dopasowywanie nazw XML-a
      1. Problem
      2. Rozwiązanie
        1. Nazwy XML-a 1.0 (rozwiązanie przybliżone)
        2. Nazwy XML-a 1.1 (rozwiązanie ścisłe)
      3. Analiza
        1. Nazwy XML-a 1.0
        2. Nazwy XML-a 1.1
      4. Warianty
      5. Patrz także
    10. 8.5. Konwersja zwykłego tekstu na kod HTML-a poprzez dodanie znaczników <p> i <br>
      1. Problem
      2. Rozwiązanie
        1. Krok 1.: Zastąpienie znaków specjalnych HTML-a odpowiednimi odwołaniami do znaków
        2. Krok 2.: Zastąpienie wszystkich znaków podziału wiersza znacznikami <br>
        3. Krok 3.: Zastąpienie wszystkich dwóch znaczników <br> obok siebie parą znaczników </p>...<p>
        4. Krok 4.: Otoczenie całego łańcucha parą znaczników <p>...</p>
        5. Przykład rozwiązania zaimplementowanego w JavaScripcie
      3. Analiza
        1. Krok 1.: Zastąpienie znaków specjalnych HTML-a odpowiednimi odwołaniami do znaków
        2. Krok 2.: Zastąpienie wszystkich znaków podziału wiersza znacznikami <br>
        3. Krok 3.: Zastąpienie wszystkich dwóch znaczników <br> obok siebie parą znaczników </p>...<p>
        4. Krok 4.: Otoczenie całego łańcucha parą znaczników <p>...</p>
      4. Patrz także
    11. 8.6. Odnajdywanie konkretnych atrybutów w znacznikach XML-a
      1. Problem
      2. Rozwiązanie
        1. Znaczniki zawierające atrybut id (rozwiązanie uproszczone)
        2. Znaczniki zawierające atrybut id (bardziej niezawodne rozwiązanie)
        3. Znaczniki <div> zawierające atrybut id
        4. Znaczniki zawierające atrybut id z wartością “my-id”
        5. Znaczniki zawierające wartość “my-class” przypisaną atrybutowi class
      3. Analiza
      4. Patrz także
    12. 8.7. Dodawanie atrybutu cellspacing do tych znaczników <table>, które jeszcze tego atrybutu nie zawierają
      1. Problem
      2. Rozwiązanie
        1. Pierwsze wyrażenie regularne: Rozwiązanie uproszczone
        2. Drugie wyrażenie regularne: Bardziej niezawodne rozwiązanie
        3. Wstawianie nowego atrybutu
      3. Analiza
      4. Patrz także
    13. 8.8. Usuwanie komentarzy XML-a
      1. Problem
      2. Rozwiązanie
      3. Analiza
        1. Jak to działa
        2. Kiedy nie można usuwać komentarzy
      4. Warianty
        1. Odnajdywanie prawidłowych komentarzy XML-a
        2. Odnajdywanie komentarzy języka C
      5. Patrz także
    14. 8.9. Odnajdywanie słów w ramach komentarzy XML-a
      1. Problem
      2. Rozwiązanie
        1. Rozwiązanie dwuetapowe
        2. Rozwiązanie jednoetapowe
      3. Analiza
        1. Rozwiązanie dwuetapowe
        2. Rozwiązanie jednoetapowe
      4. Warianty
      5. Patrz także
    15. 8.10. Zmiana separatora stosowanego w plikach CSV
      1. Problem
      2. Rozwiązanie
        1. Przykład rozwiązania w JavaScripcie
      3. Analiza
      4. Patrz także
    16. 8.11. Wyodrębnianie pól CSV z określonej kolumny
      1. Problem
      2. Rozwiązanie
        1. Przykład rozwiązania w JavaScripcie
      3. Analiza
      4. Warianty
        1. Dopasowywanie rekordu CSV i przechwytywanie pól z pierwszej kolumny przez pierwszą grupę przechwytującą
        2. Dopasowywanie rekordu CSV i przechwytywanie pól z drugiej kolumny przez pierwszą grupę przechwytującą
        3. Dopasowywanie rekordu CSV i przechwytywanie pól z trzeciej lub dalszej kolumny przez pierwszą grupę przechwytującą
        4. Łańcuch docelowy
    17. 8.12. Dopasowywanie nagłówków sekcji pliku INI
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    18. 8.13. Dopasowywanie bloków sekcji pliku INI
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
    19. 8.14. Dopasowywanie par nazwa-wartość w plikach INI
      1. Problem
      2. Rozwiązanie
      3. Analiza
      4. Patrz także
  11. A. O autorach
  12. Indeks
  13. About the Authors
  14. Kolofon
  15. Copyright