Show Menu
Cheatography

Regular Expressions Cheat Sheet 1.0 Cheat Sheet (DRAFT) by

This is a draft cheat sheet. It is a work in progress and is not finished yet.

Główne klasy znaków

Literały, znaki dosłowne
Znaki mające taką samą wartość jak w piśmie, z którego pochodzą
Metaznaki
Znaki lub ich kombinacje opisujące literały
Znaki ucieczki
Zamieniają metaznak na literał (zob. niżej)

Metaznaki

.
Dowolny znak (zob. niżej)
a|b
Altern­atywa (a lub b)
[^-]
Klasy znaków (zob. niżej)
*+?
Kwanty­fik­atory (zob. niżej)
{}
Kwanty­fik­atory (zob. niżej)
()
Grupa znaków (zob. niżej)
^$
Granice tekstu (zob. niżej)
\
Klasa znaków, znak ucieczki, znak biały (zob. niżej)

Znaki ucieczki

\\
Ukośnik lewy
\.
Kropka
\[ \]
Nawiasy kwadratowe
\{ \}
Klamry
\( \)
Nawiasy okrągłe
\|
Rura
\-
Łącznik (dywiz)
\^
Karetka
\$
Znak dolara
\*
Gwiazdka (asterysk)
\+
Plus

Znaki sterujące (białe)

\t
Tabulacja (pozioma; ASCII: 9)
\v
Tabulacja pionowa, dowolny pionowy znak biały
\V
Każdy znak za wyjątkiem pionowego znaku białego*
\n
Koniec akapitu (new line, line feed; ASCII: 10)**
\N
Każdy znak za wyjątkiem znaku końca akapitu*
\r
Powrót karetki (carriage return; ASCII: 13)
\R
Dowolna sekwencja znaków Unicode oznacz­ająca nowy akapit
\a
Dzwonek (alarm; ASCII: 7)
\0
Znak null (ASCII: 0)
*) Nie wszystkie implem­ent­acje.
**) W niektórych tekstach koniec akapitu (enter) to 2 znaki: \r\n.

Kropka – dowolny znak

Kropka oznacza każdy znak za wyjątkiem znaku (znaków) końca akapitu, a więc \n lub \r\n. Może jednak oznaczać również te znaki po włączeniu odpowi­edniej funkcji (np. single line, dotall) lub dodaniu flagi /s lub modyfi­katora (?s).

Klasy znaków

[abc]
1 znak: a albo b, albo c
[a-c]
1 znak z zakresu od a do c
[^abc]
1 znak różny od a oraz b, oraz c
[^a-c]
1 znak różny od każdego z zakresu od a do c
\d
Cyfry: \d = [0-9] = [01234­56789]
\D
Niecyfry: \D = [0-9] = [012345­6789]
\w
Znak wyrazowy: \w = [a-zA-­Z0-9_]
\W
Znak niewyr­azowy: \W = [^a-zA­-Z0-9_]
\s
Biały znak (spacja, enter, tabulacja i in.)
\S
Znak niebiały: \S = \w + !, ?, @ i in.
\L*
Małe litery
\U*
Wielkie litery
\E*
Wyłącza działanie \U oraz \L
\b
Granice wyrazu
\B
Granice niewyrazu
*) Działa tylko w oknie "­Zamień na".

Kwanty­fik­atory

Zachłanne
Leniwe
Zaborcze
Znak a...
a*
a*?
a*+
0 razy lub więcej
a+
a+?
a++
1 raz lub więcej
a?
a??
a?+
0 lub 1 raz
a{3}
a{3}?
a{3}+
3 razy
a{3,}
a{3,}?
a{3,}+
3 lub więcej razy
a{3,6}
a{3,6}?
a{3,6}+
od 3 do 6 razy
Kwanty­fik­atory zachłanne - zwracają maksymalne możliwe dopaso­wanie.
Kwanty­fik­atory leniwe - zwracają minimalne możliwe dopaso­wanie.
Kwanty­fik­atory zaborcze - zwracają tylko maksymalne dopaso­wanie lub żadne.

Grupy znaków

Grupy przech­wycone
(abc)
Nienazwana grupa abc
(?|ab|cd)
Nienazwane grupy ab i cd
(?'x'ab)
Grupa ab o nazwie x
(?<­x>ab)
Grupa ab o nazwie x
(?'x'a­b|cd)
Grupy ab i cd o nazwie x
(?<­x>a­b|cd)
Grupy ab i cd o nazwie x
Grupy nieprz­ech­wycone
(?:abc)
Nienazwana grupa abc

Odwołania do przech­wyc­onych grup znaków

\1
\g<1>
\g{1}
Pierwsza grupa nienazwana
\g{-1}
Ostatnia grupa nienazwana
(przed odwoła­niem)
\g<­x>
Grupa o nazwie x
\g<­0>
Wszystkie wyszukania
(także grupy nieprz­ech­wycone)

Granice (kotwice)

Początek
Koniec
Granice niekon­sum­ujące znaku (spraw­dzają tylko obecność znaku granic­znego)
^
$
Cały tekst lub akapit*
\b
\b
Wyraz
\B
\B
Niewyraz
\<
\>
Wyraz
[[:<:]]
[[:>:]]
Wyraz (zob. POSIX)
\A
\Z
Cały tekst
\Q
\E
Wyłączenie metaznaków
Granice konsum­ujące znaki (zwracają sam znak graniczny)
(**)
\W
Wyraz
 
\n lub \r\n
Akapit
*) Znaki ^, $ oznaczają granice akapitu tylko w niektórych implem­ent­acjach lub przy użyciu flagi /m lub modyfi­katora (?m) (multi­line).
**) Konsum­ujące znaki końca wyrazu i akapitu wskazują też początek niepie­rwszego wyrazu i akapitu. Znakiem końca ostatniego wyrazu i akapitu są $ oraz \Z.

Asercje (asser­tions)

Przewi­dywania postępowe (looka­heads)
a(?=b)
Zwróć a, jeśli PO nim jest b
a(?!b)
Zwróć a, jeśli PO nim NIE ma b
Przewi­dywania wsteczne (lookb­ehinds)
(?<=b)a
Zwróć a, jeśli PRZED nim jest b
(?<­!b)a, (?!=b)a
Zwróć a, jeśli PRZED nim NIE ma b
Wyrażenie warunkowe
(?(w)a|b)
Jeśli dopasowano w, znajdź a, jeśli nie, znajdź b
(?(w)a)
Jeśli dopasowano w, znajdź a
(?w)|b)
Jeśli NIE dopasowano w, znajdź b
(g)(?(1)a)
Warunek jako grupa nienazwana
(?'n')(?(n)a)
Warunek jako grupa nazwana
(?(?<=w)a)
Warunek jako przewi­dywanie

Opcje (modif­iers)

(?i)
Pominięcie wielkości liter
(?-i)
Uwzglę­dnienie wielkości liter
(?x)
Ignoro­wanie spacji i napisów po # (komen­tarzy)
(?-x)
Traktuj spacje i # jak literały
(?m)
^ i $ wskazują począt­ek/­koniec akapitu
(?-m)
^ i $ wskazują tylko począt­ek/­koniec tekstu
(?J)
Możliwe duplikaty nazw grup*
Zapis modyfi­katorów
(?ism) ≡ (?i)(?­s)(?m)
Kilka modyfi­katorów
(?is) ≡ (?si)
Kolejność modyfi­katorów
(?-im) ≡ (?-i)(?-m)
Negacja modyfi­katorów
(?i:te)st ≡ (?i)te­(?-i)st
Zawężenie działania modyfi­katorów
* Nie we wszystkich silnikach.

Opcje silnika PCRE (verbs)

(*UCP)
Poszer­zenie klas znaków o znaki z całego Unicode*
(*LIMI­T_M­ATCH=(5)
Ograni­czenie liczby dopasowań do 5
(*LIMI­T_R­ECU­RSI­ON=5)
Ograni­czenie liczby dopaso­wyw­anych podwzorców
Ustawienia znaków i sekwencji oznacz­ających koniec akapitu:
(*CR)
Koniec akapitu to znak \r
(*LF)
Koniec akapitu to znak \n
(*CRLF)
Koniec akapitu to sekwencja \r\n
(*ANYCRLF)
Koniec akapitu to \r lub \n, lub \r\n
(*ANY)
Koniec akapitu do dowolny znak oznacz­ający w Unicode koniec akapitu**
) Klasy \d, \w, \s, \h, \v oznaczają domyślnie znaki z zakresu ASCII. Opcja (UCP) poszerza ich zakresy na całą tablicę Unicode.
**) Znakami końca akapitu stają się: \r\n, \r, \n, \v, \f, U-0085, U-2028, U-2029.

Definicje wyszukiwań

(?(DEF­INE)(?'x'abc))
Zdefin­iowanie wyszuk­iwania abc o nazwie x
\g'x'
\g<x>
Wywołanie wyszuk­iwania o nazwie x
Same definicje są ignorowane podczas wyszuk­iwania.

Macierz podsta­wiania

Zamiana wielu znaków w 2 krokach, np. a, b, c na, odpowi­ednio, x, y, z.
Krok:
Znajdź:
Zamień na:
1
([abc])
``\1`a­x`b­y`cz`
2
``(.).*­?`­\1(.).*?``
\2

Kody znaków

\x##
2-cyfrowy kod szesna­stkowy (Unicode)
\x{#}
kod szesna­stkowy (Unicode)
\o{#}
kod ósemkowy (Unicode)

Znaki POSIX

[[:dig­it:]]
Cyfry
[[:xdi­git:]]
Cyfry szesna­stkowe [0-9a-­fA-F]
[[:alp­ha:]]
Litery
[[:low­er:]]
Małe litery
[[:upp­er:]]
Wielkie litery
[[:aln­um:]]
Litery i cyfry
[[:asc­ii:]]
Znaki z tablicy ASCII
[[:pun­ct:]]
Nielitery i niecyfry
[[:word:]]
Znaki wyrazowe (litery, cyfry i podkre­ślnik)
[[:gra­ph:]]
Znaki widoczne (niebiałe)
[[:pri­nt:]]
Znaki widoczne (niebiałe) i spacje
[[:bla­nk:]]
Spacja i tabulacja
[[:spa­ce:]]
Białe znaki
[[:cnt­rl:]]
Znaki kontrolne
[[:<:]]
Początek wyrazu
[[:>:]]
Koniec wyrazu

Grupy znaków Unicode

Główne grupy znaków Unicode
\pC
Znaki niewid­oczne i nieużywane (kody bez znaków)
\pL
Litery
\pN
Liczby
\pM
Łączące znaki diakry­tyczne
\pP
Znaki przest­ankowe (nielitery i niecyfry)
\pS
Symbole matema­tyczne, znaki walut, piktog­ramy, semigr­afika itp.
\pZ
Białe znaki
Podgrupy znaków Unicode
\p{Cc}
Znaki kontrolne
\p{Cf}
Niewid­oczne znaki format­owania
\p{Cn}
Kody bez przypi­sanych znaków
\p{Co}
Znaki do użytku prywatnego
\p{Cs}
Kody wykluczone z użytku
(dot. kompat­ybi­lności z UTF-16)
\p{Ll}
Litery małe z dowolnych języków
\p{Lu}
Litery wielkie z dowolnych języków
\p{Lo}
Litery bez odpowi­ednika wielki­ego­/małego
\p{Lt}
Dwuznaki o pojedy­nczym kodzie
\p{Mc}
Łączący znak diakry­tyczny o szerokości litery
\p{Me}
Znak, w który wpisywany jest inny znak
\p{Mn}
Łączący znak diakry­tyczny wpisywany w pole innej litery
\p{Nd}
Liczby dziesiętne
\p{No}
Cyfry w górnym i dolnym indeksie
\p{Pc}
Znak przest­ankowy łączący słowa (np. "­_")
\p{Pd}
Dowolny myślnik lub łącznik
\p{Ps}
Dowolny nawias otwier­ający
\p{Pe}
Dowolny nawias zamykający
\p{Pi}
Dowolny znak otwier­ający cytat
\p{Pf}
Dowolny znak zamykający cytat
\p{Po}
Pozostałe widoczne znaki niealf­anu­mer­yczne
\p{Sc}
Symbole walut
\p{Sk}
Znaki modyfi­kujące odstępy (diakryty dopisy­wane)
\p{Sm}
Symbole matema­tyczne
\p{So}
Pozostałe symbole
\p{Zl}
Separator wiersza (U+2028)
\p{Zp}
Separator akapitu (U+2029)
\p{Zs}
Niewid­oczny znak mający pewną szerokość