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 więcej.
- 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 przypominających „znajdź i zamień”. 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 Google Docs i Microsoft Word.
Example : Regular expression for an email address :
^([a-zA-Z0-9_-.]+)@([a-zA-Z0-9_-.]+).([a-zA-Z]{25})$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?
Do pisania wyrażeń regularnych używa się pewnych elementów, o których mowa 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 on3. 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. {minmax} 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 ( $ ).
Informuje komputer, że dopasowanie musi nastąpić na końcu ciągu lub przed n na końcu wiersza 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 ab 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 abc .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 ( )
Zestaw 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. numer
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. n oznacza, że grupa ujęta w n-tym nawiasie zostanie powtórzona na 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 : bA(?#This is an inline comment)w+b17. # [do końca wiersza]
Komentarz trybu X. Komentarz zaczyna się od znaku # i trwa do końca linii.
Example : (?x)bAw+b#Matches words starting with A