Samouczek Regex – Jak pisać wyrażenia regularne?
Wyrażenie regularne (regex) to ciąg znaków definiujący wzorzec wyszukiwania. Oto jak pisać wyrażenia regularne:
- Zacznij od zrozumienia znaków specjalnych używanych w wyrażeniach regularnych, takich jak ., *, +,? i innych.
- Wybierz język programowania lub narzędzie obsługujące wyrażenia regularne, takie jak Python, Perl lub grep.
- Napisz swój wzór, używając znaków specjalnych i liter.
- Użyj odpowiedniej funkcji lub metody, aby wyszukać wzorzec w ciągu znaków.
Przykłady:
- Aby dopasować sekwencję znaków literału, po prostu wpisz te znaki we wzorcu.
- Aby dopasować pojedynczy znak z zestawu możliwości, użyj nawiasów kwadratowych, np. [0123456789] pasuje do dowolnej cyfry.
- Aby dopasować zero lub więcej wystąpień poprzedniego wyrażenia, użyj symbolu gwiazdki (*).
- Aby dopasować jedno lub więcej wystąpień poprzedniego wyrażenia, użyj symbolu plus (+).
- Należy pamiętać, że wyrażenie regularne może być złożone i trudne do odczytania, dlatego zaleca się używanie narzędzi takich jak testery wyrażeń regularnych do debugowania i optymalizacji wzorców.
Wyrażenie regularne (czasami nazywane wyrażeniem wymiernym) to ciąg znaków definiujący wzorzec wyszukiwania, używany głównie do dopasowywania wzorców z ciągami lub dopasowywania ciągów, tj. operacji podobnych do wyszukiwania i zamiany. Wyrażenia regularne to uogólniony sposób dopasowywania wzorców do sekwencji znaków. Jest używany w każdym języku programowania, takim jak C++, Java i Python.
Co to jest wyrażenie regularne i dlaczego jest tak ważne?
Regex jest używany w Google Analytics w dopasowywaniu adresów URL we wspieraniu wyszukiwania i zamiany w najpopularniejszych edytorach, takich jak Sublime, Notepad ++, Brackets, Dokumenty Google i Microsoft Word.
Example : Regular expression for an email address : ^([a-zA-Z0-9_-.]+)@([a-zA-Z0-9_-.]+).([a-zA-Z]{2,5})$ Powyższe wyrażenie regularne można wykorzystać do sprawdzenia, czy dany zestaw znaków jest adresem e-mail, czy nie.
Jak pisać wyrażenia regularne?
Istnieją pewne elementy używane do pisania wyrażeń regularnych, jak wspomniano poniżej:
1. Repeatery ( *, + i { } )
Symbole te działają jak powtórzenia i informują komputer, że poprzedzający znak ma zostać użyty więcej niż jeden raz.
2. Symbol gwiazdki ( * )
Mówi komputerowi, aby dopasował poprzedzający znak (lub zestaw znaków) 0 lub więcej razy (aż do nieskończoności).
Example : The regular expression ab*c will give ac, abc, abbc, abbbc….and so on
3. Symbol plusa ( + )
Mówi komputerowi, aby powtórzył poprzedni znak (lub zestaw znaków) co najmniej jeden lub więcej razy (aż do nieskończoności).
Example : The regular expression ab+c will give abc, abbc, abbbc, … and so on.
4. Nawiasy klamrowe { … }
Mówi komputerowi, aby powtórzył poprzedzający znak (lub zestaw znaków) tyle razy, ile wynosi wartość w tym nawiasie.
Example : {2} means that the preceding character is to be repeated 2 times, {min,} means the preceding character is matches min or more times. {min,max} means that the preceding character is repeated at least min & at most max times. 5. Symbol wieloznaczny ( . )
Symbol kropki może zastąpić dowolny inny symbol, dlatego nazywany jest znakiem wieloznacznym.
Example : The Regular expression .* will tell the computer that any character can be used any number of times.
6. Znak opcjonalny (?)
Ten symbol informuje komputer, że poprzedzający znak może, ale nie musi, znajdować się w ciągu, który ma zostać dopasowany.
Example : We may write the format for document file as – docx? The ‘?’ tells the computer that x may or may not be present in the name of file format.
7. Symbol karetki ( ^ ). ( Ustalanie pozycji na mecz)
Symbol karetki informuje komputer, że dopasowanie musi rozpocząć się na początku ciągu lub linii.
Example : ^d{3} will match with patterns like '901' in '901-333-'. 8. Symbol dolara ($).
Mówi komputerowi, że dopasowanie musi nastąpić na końcu ciągu lub przed na końcu linii lub ciągu.
Example : -d{3}$ will match with patterns like '-333' in '-901-333'. 9. Klasy postaci
Klasa znaku pasuje do dowolnego zestawu znaków. Służy do dopasowania najbardziej podstawowego elementu języka, takiego jak litera, cyfra, spacja, symbol itp.
S : dopasowuje dowolne białe znaki, takie jak spacja i tabulator.
S : dopasowuje dowolne znaki inne niż białe znaki.
D : dopasowuje dowolny znak cyfry.
D: dopasowuje dowolne znaki inne niż cyfry.
w : dopasowuje dowolny znak słowa (w zasadzie alfanumeryczny)
W : dopasowuje dowolny znak inny niż słowo.
B : dopasowuje dowolną granicę słowa (obejmuje to spacje, myślniki, przecinki, średniki itp.
[zestaw_znaków]: Dopasowuje dowolny pojedynczy znak w set_of_characters. Domyślnie w dopasowaniu rozróżniana jest wielkość liter.
Example : [abc] will match characters a,b and c in any string.
10. [^zestaw_znaków] Negacja:
Dopasowuje dowolny pojedynczy znak, który nie znajduje się w zestawie_znaków. Domyślnie w dopasowaniu rozróżniana jest wielkość liter.
Example : [^abc] will match any character except a,b,c .
11. [pierwszy-ostatni] Zakres znaków:
Dopasowuje dowolny pojedynczy znak z zakresu od pierwszego do ostatniego.
Example : [a-zA-z] will match any character from a to z or A to Z.
12. Symbol ucieczki ()
Jeśli chcesz dopasować rzeczywiste znaki „+”, „.” itp., dodaj ukośnik odwrotny ( ) przed tym znakiem. Spowoduje to, że komputer potraktuje następujący znak jako znak wyszukiwania i rozważy go pod kątem pasującego wzorca.
Example : d+[+-x*]d+ will match patterns like '2+2' and '3*9' in '(2+2) * 3*9'.
13. Grupowanie znaków ( )
Zbiór różnych symboli wyrażenia regularnego można zgrupować tak, aby działały jak pojedyncza jednostka i zachowywały się jak blok. W tym celu należy ująć wyrażenie regularne w nawias ( ).
Example : ([A-Z]w+) contains two different elements of the regular expression combined together. This expression will match any pattern containing uppercase letter followed by any character.
14. Pionowy pasek ( | )
Dopasowuje dowolny element oddzielony znakiem pionowej kreski (|).
Example : th(e|is|at) will match words - the, this and that.
15. liczba
Odniesienie wsteczne: umożliwia późniejszą identyfikację wcześniej dopasowanego podwyrażenia (wyrażenie przechwycone lub ujęte w nawiasy okrągłe) w tym samym wyrażeniu regularnym. oznacza, że grupa ujęta w n-tym nawiasie zostanie powtórzona w bieżącej pozycji.
Example : ([a-z])1 will match ee in Geek because the character at second position is same as character at position 1 of the match.
16. Jak ( ?# komentarz )
Komentarz wbudowany: komentarz kończy się pierwszym nawiasem zamykającym.
Example : A(?#This is an inline comment)w+
17. # [do końca wiersza]
Komentarz trybu X. Komentarz zaczyna się od znaku # i trwa do końca linii.
Example : (?x)Aw+#Matches words starting with A