logo

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:

  1. Zacznij od zrozumienia znaków specjalnych używanych w wyrażeniach regularnych, takich jak „.” '*' '+' '?' i więcej.
  2. Wybierz język programowania lub narzędzie obsługujące wyrażenia regularne, takie jak Python Perl lub grep.
  3. Napisz swój wzór, używając znaków specjalnych i liter.
  4. Użyj odpowiedniej funkcji lub metody, aby wyszukać wzorzec w ciągu znaków.

Przykłady:

  1. Aby dopasować sekwencję znaków literału, po prostu wpisz te znaki we wzorcu.
  2. Aby dopasować pojedynczy znak z zestawu możliwości, użyj nawiasów kwadratowych, np. [0123456789] pasuje do dowolnej cyfry.
  3. Aby dopasować zero lub więcej wystąpień poprzedniego wyrażenia, użyj symbolu gwiazdki (*).
  4. Aby dopasować jedno lub więcej wystąpień poprzedniego wyrażenia, użyj symbolu plus (+).
  5. 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:



algorytm Bellforda

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).

częściowe zróżnicowanie w lateksie
    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. {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  

kolekcje Java Java

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.

Zamień ciąg Java
    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 ( ).

metody Javy
    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+b

17. # [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