logo

Regex-opplæring – Hvordan skrive regulære uttrykk?

Et regulært uttrykk (regex) er en sekvens av tegn som definerer et søkemønster. Slik skriver du regulære uttrykk:

  1. Begynn med å forstå spesialtegnene som brukes i regulært uttrykk, for eksempel ., *, +, ? og mer.
  2. Velg et programmeringsspråk eller verktøy som støtter regulært uttrykk, for eksempel Python, Perl eller grep.
  3. Skriv mønsteret ditt ved hjelp av spesialtegn og bokstavelige tegn.
  4. Bruk riktig funksjon eller metode for å søke etter mønsteret i en streng.

Eksempler:

  1. For å matche en sekvens av bokstavelige tegn, skriv ganske enkelt disse tegnene i mønsteret.
  2. For å matche et enkelt tegn fra et sett med muligheter, bruk firkantede parenteser, f.eks. [0123456789] samsvarer med et hvilket som helst siffer.
  3. For å matche null eller flere forekomster av det foregående uttrykket, bruk stjerne (*)-symbolet.
  4. For å matche en eller flere forekomster av det foregående uttrykket, bruk pluss-symbolet (+).
  5. Det er viktig å merke seg at regex kan være komplisert og vanskelig å lese, så det anbefales å bruke verktøy som regex-testere for å feilsøke og optimalisere mønstrene dine.

Et regulært uttrykk (noen ganger kalt et rasjonelt uttrykk) er en sekvens av tegn som definerer et søkemønster, hovedsakelig for bruk i mønstermatching med strenger, eller strengmatching, dvs. finn og erstatt lignende operasjoner. Regulære uttrykk er en generalisert måte å matche mønstre med sekvenser av tegn. Det brukes i alle programmeringsspråk som C++, Java og Python.



Hva er et regulært uttrykk og hva gjør det så viktig?

Regex brukes i Google Analytics i URL-matching i støtte for søk og erstatter i de fleste populære redaktører som Sublime, Notepad++, Brackets, Google Docs og Microsoft Word.

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

Det regulære uttrykket ovenfor kan brukes til å sjekke om et gitt sett med tegn er en e-postadresse eller ikke.

Hvordan skrive regulære uttrykk?

Det er visse elementer som brukes til å skrive regulære uttrykk som nevnt nedenfor:



tilkoblinger i java

1. Repeatere ( *, + og { } )

Disse symbolene fungerer som repeatere og forteller datamaskinen at det foregående tegnet skal brukes mer enn bare én gang.

2. Stjernesymbolet ( * )

Den forteller datamaskinen å matche det foregående tegnet (eller settet med tegn) 0 eller flere ganger (opptil uendelig).

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

3. Pluss-symbolet ( + )

Den ber datamaskinen om å gjenta det foregående tegnet (eller settet med tegn) minst én eller flere ganger (opptil uendelig).



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

4. De krøllete seler { … }

Den ber datamaskinen gjenta det foregående tegnet (eller settet med tegn) like mange ganger som verdien innenfor denne parentesen.

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

Punktsymbolet kan ta plassen til et hvilket som helst annet symbol, det er derfor det kalles jokertegn.

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

6. Valgfritt tegn ( ? )

Dette symbolet forteller datamaskinen at det foregående tegnet kan eller ikke er til stede i strengen som skal matches.

  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. Karet ( ^ )-symbolet ( Stille inn posisjon for kampen)

Caret-symbolet forteller datamaskinen at kampen må starte på begynnelsen av strengen eller linjen.

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

8. Dollarsymbolet ( $ ).

modem vs ruter

Den forteller datamaskinen at treffet må skje på slutten av strengen eller før på slutten av linjen eller strengen.

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

9. Karakterklasser

En tegnklasse samsvarer med hvilken som helst av et sett med tegn. Det brukes til å matche det mest grunnleggende elementet i et språk som en bokstav, et siffer, et mellomrom, et symbol, etc.

s : samsvarer med alle mellomromstegn som mellomrom og tabulator.
S : samsvarer med alle tegn som ikke er mellomrom.
d : samsvarer med et hvilket som helst siffertegn.
D: samsvarer med alle ikke-sifrede tegn.
I : samsvarer med et hvilket som helst ordtegn (i utgangspunktet alfanumerisk)
I : samsvarer med et hvilket som helst ikke-ord-tegn.
 : samsvarer med en hvilken som helst ordgrense (dette vil inkludere mellomrom, bindestreker, kommaer, semikolon osv.
[sett_med_tegn]: Matcher ethvert enkelt tegn i sett_av_tegn. Som standard skiller samsvaret mellom store og små bokstaver.

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

10. [^sett_karakterer] Negasjon:

Matcher ethvert enkelt tegn som ikke er i sett_av_tegn. Som standard skiller samsvaret mellom store og små bokstaver.

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

11. [først-siste] Tegnområde:

Matcher ethvert enkelt tegn i området fra første til siste.

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

12. Rømningssymbolet ( )

Hvis du vil matche for de faktiske ‘+’, ‘.’ etc tegnene, legg til en omvendt skråstrek( ) før det tegnet. Dette vil fortelle datamaskinen om å behandle følgende tegn som et søketegn og vurdere det for et samsvarende mønster.

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

13. Gruppering av tegn ( )

Et sett med forskjellige symboler for et regulært uttrykk kan grupperes sammen for å fungere som en enkelt enhet og oppføre seg som en blokk, for dette må du sette det regulære uttrykket i 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 søyle ( | )

Matcher et hvilket som helst element atskilt med tegnet med vertikal strek (|).

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

15. ummer

Tilbakereferanse: lar et tidligere matchet underuttrykk (uttrykk fanget opp eller omsluttet av sirkulære parenteser) identifiseres i det samme regulære uttrykket. betyr at gruppen omsluttet av den n-te parentesen vil bli gjentatt ved gjeldende posisjon.

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

Innebygd kommentar: Kommentaren slutter ved første avsluttende parentes.

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

17. # [til slutten av linjen]

X-modus kommentar. Kommentaren starter på et # uten escape og fortsetter til slutten av linjen.

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