Wprowadzenie do wyrażeń regularnych

Marcin
Lewandowski




Marcin
Lewandowski

Marcin Lewandowski
- programista z ponad 15 letnim doświadczeniem,
- tworzę i rozwijam systemy dla logistyki,
- prowadzę bloga czterytygodnie.pl






Uczestnicy
- Imię i nazwisko
- Jaki jest dla mnie cel szkolenia ?
- Czy udało mi się wypełnić Kwestionariusz Oczekiwań przed szkoleniem ?
- Gdzie i w jaki sposób będę wykorzystywać wiedzę ze szkolenia ?
- Co aktualnie wiem o temacie szkolenia ?
- Jakie wykorzystuję oprogramowanie związane z tematem szkolenia ?

Marcin
Lewandowski

Informacje organizacyjne


Marcin
Lewandowski

Plan szkolenia
- Wprowadzenie
- Czym są wyrażenia regularne ?
- W czym może pomóc Ci RegEx ?
- Jak działa silnik RegEx
- Narzędzia
- Wyszukiwanie ciągów znaków
- Klasy znaków
- Zbiory
- Zakresy
- Białe znaki
- Skrótowe klasy znaków
- Kropka
- Alternatywy
- Powtórzenia
- Zachłanność
- Grupy

Marcin
Lewandowski

Na zakończenie szkolenia


Marcin
Lewandowski

Wprowadzenie
Czym są wyrażenia regularne ?
opis ciągu znaków
399,00 zł
jak opiszecie powyższy ciąg znaków ??
Czym są wyrażenia regularne ?
opis ciągu znaków

takiego opisu nie zrozumie komputer :(
Czym są wyrażenia regularne ?
opis ciągu znaków



W czym może pomóc RegEx ?
- sprawdzenie tekstu ze wzorcem, czyli sprawdzenie poprawności danych,
- odnajdowanie wzorca w tekście, pozwala na znalezienie np. wszystkich adresów e-mail w tekście
- fragmentacja tekstu, wyciągnięcie fragmentów danych ze wzorców, np. Apple iPhone 6s 32GB wyciągamy informację o 32GB
- zamiana tekstu, pozwala na transformację danych na dane w jednym formacie np. ujednolicenie formatu daty, numeru telefonu
Jak działa silnik RegEx ?

Jak działa silnik RegEx ?

Jak działa silnik RegEx ?

Jak działa silnik RegEx ?

Jak działa silnik RegEx ?

Jak działa silnik RegEx ?

Jak działa silnik RegEx ?

Jak działa silnik RegEx ?

Jak działa silnik RegEx ?

Narzędzia

Wyszukiwanie ciągów znaków
Wyszukiwanie ciągów znaków
odpowiednik ctrl + f w wyszukiwarce
IPHONE 7+ 32GB | WYBÓR KOLORÓW | GRATIS | KLASA A+


Flagi
Flagi
g – global
pozwala na wielokrotne wyszukiwanie wzorca


Flagi
m – multi line, zmienia zachowanie ^ oraz $, po włączeniu flagi znak ^ oznacza początek linii, a $ koniec linii


Flagi
i – insensitive, włącza niewrażliwość na wielkość liter


Flagi
s – single line, po włączeniu kropka zastępuje także znak nowej linii


Flagi
u – unicode, dodaje do zakresu \w także znaki narodowe


Flagi
U – ungreedy, zmienia domyślny tryb działania z zachłannego na niezachłanny


Klasy znaków
Zbiory
Klasy znaków
[ ...lista elementów... ]
[0123456789]


Zbiory
Klasy znaków
[ ] vs [ ]+ vs [ ]*



Zakresy
Klasy znaków
[0123456789]

[0-9]

Zakresy
Klasy znaków
[a-zA-Z]
[a-z0-9]


Białe znaki
Klasy znaków
\ – spacja
\t – tabulacja
\n – nowa linia (ang. line feed – LF)
\r – powrót karetki (ang. carriage return – CR).
Należy zwrócić uwagę, że różne systemy operacyjne zapisują znak nowej linii w nieco inny sposób.
Unix / Linux / Mac OS X (LF) – \n
Mac OS (CR) – \r
Windows (CR LF) – \r\n
Skrótowe klasy znaków
Klasy znaków
\d – cyfry,
\D – wszystko poza cyframi,
\w – cyfry i litery (włączona flaga Unicode dodaje znaki narodowe),
\W – wszystko poza cyframi i literami (włączona flaga Unicode dodaje znaki narodowe),
\s – białe znaki,
\S – wszystko poza białymi znakami
Kropka
Klasy znaków
Specjalny znak, który jest w stanie zastąpić każdy inny, poza jednym drobnym wyjątkiem. Tym wyjątkiem jest znak nowej linii.

Alternatywy
Alternatywy
Alternatywy mają swój znak specjalny, którym rozdzielamy kolejne warunki
|
iphone 7\+
iphone 7 plus

Powtórzenia
Powtórzenia




\d{1}
Powtórzenia
\d{1,5}


\d{1,}
Powtórzenia
{0,1} możemy zapisać za pomocą ?
{1,} możemy zapisać za pomocą +
{0,} możemy zapisać za pomocą *
Zachłanność
Zachłanność
?


Grupy
Grupy
( )


Grupy
( )+ ( )*



Kotwice
Kotwice
^ - dopasowanie początku tekstu
$ - dopasowanie końca tekstu


Kotwice

Granice
Granice
\b

określa granicę słowa
Granice
\b + unicode


Dziękuję :)
kurs-rabbitmq.pl
RegEx - NobleProg
By Marcin Lewandowski
RegEx - NobleProg
- 432