logo

Regex Tutorial – Hur skriver man reguljära uttryck?

Ett reguljärt uttryck (regex) är en sekvens av tecken som definierar ett sökmönster. Så här skriver du reguljära uttryck:

  1. Börja med att förstå specialtecknen som används i regex, som ., *, +, ? och mer.
  2. Välj ett programmeringsspråk eller verktyg som stöder regex, som Python, Perl eller grep.
  3. Skriv ditt mönster med hjälp av specialtecken och bokstavliga tecken.
  4. Använd lämplig funktion eller metod för att söka efter mönstret i en sträng.

Exempel:

  1. För att matcha en sekvens av bokstavliga tecken, skriv helt enkelt dessa tecken i mönstret.
  2. För att matcha ett enskilt tecken från en uppsättning möjligheter, använd hakparenteser, t.ex. [0123456789] matchar valfri siffra.
  3. För att matcha noll eller fler förekomster av föregående uttryck, använd stjärnsymbolen (*).
  4. För att matcha en eller flera förekomster av föregående uttryck, använd plustecknet (+).
  5. Det är viktigt att notera att regex kan vara komplext och svårt att läsa, så det rekommenderas att använda verktyg som regex-testare för att felsöka och optimera dina mönster.

Ett reguljärt uttryck (kallas ibland ett rationellt uttryck) är en sekvens av tecken som definierar ett sökmönster, främst för användning i mönstermatchning med strängar, eller strängmatchning, dvs hitta och ersätt liknande operationer. Reguljära uttryck är ett generaliserat sätt att matcha mönster med teckensekvenser. Det används i alla programmeringsspråk som C++, Java och Python.



Vad är ett reguljärt uttryck och vad gör det så viktigt?

Regex används i Google Analytics i URL-matchning i stödjande sökning och ersätter i de flesta populära redigerare som Sublime, Notepad++, Brackets, Google Docs och Microsoft Word.

  Example :    Regular expression for an email address : ^([a-zA-Z0-9_-.]+)@([a-zA-Z0-9_-.]+).([a-zA-Z]{2,5})$>

Ovanstående reguljära uttryck kan användas för att kontrollera om en given uppsättning tecken är en e-postadress eller inte.

Hur skriver man reguljära uttryck?

Det finns vissa element som används för att skriva reguljära uttryck som nämns nedan:



1. Repeaters ( *, + och { } )

Dessa symboler fungerar som repeterare och talar om för datorn att det föregående tecknet ska användas mer än bara en gång.

2. Asterisksymbolen ( * )

Den säger åt datorn att matcha föregående tecken (eller uppsättning tecken) 0 eller fler gånger (upp till oändligt).

  Example :   The regular expression ab*c will give ac, abc, abbc, abbbc….and so on>

3. Plussymbolen ( + )

Den säger åt datorn att upprepa föregående tecken (eller uppsättning tecken) minst en eller flera gånger (upp till oändligt).



java virtuell maskin
  Example :   The regular expression ab+c will give abc, abbc, abbbc, … and so on.>

4. De lockiga hängslen { … }

Det talar om för datorn att upprepa föregående tecken (eller uppsättning tecken) lika många gånger som värdet inom denna parentes.

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

Punktsymbolen kan ersätta vilken annan symbol som helst, det är därför den kallas jokertecken.

  Example :    The Regular expression .* will tell the computer that any character can be used any number of times.>

6. Valfritt tecken ( ? )

Den här symbolen talar om för datorn att det föregående tecknet kan finnas eller inte finns i strängen som ska matchas.

  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. Teckensymbolen ( ^ ). ( Ställa in position för matchen)

Caret-symbolen talar om för datorn att matchen måste börja i början av strängen eller raden.

  Example :   ^d{3} will match with patterns like '901' in '901-333-'.>

8. Dollarsymbolen ( $ ).

Den talar om för datorn att matchningen måste ske i slutet av strängen eller före i slutet av raden eller strängen.

  Example :   -d{3}$ will match with patterns like '-333' in '-901-333'.>

9. Karaktärsklasser

En teckenklass matchar vilken som helst av en uppsättning tecken. Det används för att matcha det mest grundläggande elementet i ett språk som en bokstav, en siffra, ett mellanslag, en symbol, etc.

s : matchar alla blanksteg som blanksteg och tabb.
S : matchar alla tecken som inte är blanksteg.
d : matchar alla siffror.
D: matchar alla icke-siffriga tecken.
I : matchar alla ordtecken (i princip alfanumeriska)
I : matchar alla tecken som inte är ord.
 : matchar valfri ordgräns (detta inkluderar mellanslag, bindestreck, kommatecken, semikolon, etc.
[uppsättning_tecken]: Matchar alla enstaka tecken i set_of_characters. Som standard är matchningen skiftlägeskänslig.

  Example :   [abc] will match characters a,b and c in any string.>

10. [^uppsättning_karakter] Negation:

Matchar alla enstaka tecken som inte finns i set_of_characters. Som standard är matchningen skiftlägeskänslig.

  Example :   [^abc] will match any character except a,b,c .>

11. [först-sist] Teckenintervall:

Matchar alla enstaka tecken i intervallet från första till sista.

  Example :   [a-zA-z] will match any character from a to z or A to Z.>

12. Flyktsymbolen ( )

Om du vill matcha för de faktiska tecknen '+', '.' etc, lägg till ett omvänt snedstreck ( ) före det tecknet. Detta kommer att tala om för datorn att behandla följande tecken som ett söktecken och betrakta det som ett matchande mönster.

java huvudmetod
  Example :   d+[+-x*]d+ will match patterns like '2+2' and '3*9' in '(2+2) * 3*9'.>

13. Gruppera tecken ( )

En uppsättning olika symboler för ett reguljärt uttryck kan grupperas tillsammans för att fungera som en enda enhet och bete sig som ett block, för detta måste du linda det reguljära uttrycket inom parentes( ).

  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. Vertikal stapel ( | )

Matchar ett element avgränsat av tecknet med vertikal streck (|).

  Example :   th(e|is|at) will match words - the, this and that.>

15. ummer

Bakåtreferens: gör att ett tidigare matchat underuttryck (uttryck fångat eller omslutet inom cirkulära parenteser) kan identifieras i efterhand i samma reguljära uttryck. betyder att gruppen inom den n:e parentesen kommer att upprepas vid nuvarande position.

  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. Hur (?# kommentar)

Inbäddad kommentar: Kommentaren slutar vid den första avslutande parentesen.

  Example :   A(?#This is an inline comment)w+>

17. # [till slutet av raden]

X-mode kommentar. Kommentaren börjar på ett # utan undantag och fortsätter till slutet av raden.

  Example :   (?x)Aw+#Matches words starting with A>