Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Regex-syntaks og grunnleggende mønstre | Introduksjon til regulære uttrykk
Python Regulære Uttrykk

Regex-syntaks og grunnleggende mønstre

Sveip for å vise menyen

Regex-syntaks: Byggeklosser

Regulære uttrykk, eller regex, bygges opp ved hjelp av en kombinasjon av litteraler, metategn, tegnklasser og kvantifikatorer. Å forstå disse komponentene er avgjørende for å skrive effektive mønstre.

  • Litteraler er vanlige tegn som matcher seg selv. For eksempel matcher mønsteret "cat" den eksakte strengen "cat";
  • Metategn er spesielle symboler som har unike betydninger i regex. De vanligste metategnene inkluderer:
    • . (punktum): matcher et hvilket som helst enkelt tegn unntatt linjeskift;
    • ^: matcher starten av en streng;
    • $: matcher slutten av en streng;
    • *: matcher null eller flere forekomster av det foregående elementet;
    • +: matcher én eller flere forekomster av det foregående elementet;
    • ?: matcher null eller én forekomst av det foregående elementet.
  • Tegnklasser lar deg matche ett enkelt tegn fra et sett med tegn. For eksempel matcher [abc] "a", "b" eller "c", og [0-9] matcher et hvilket som helst siffer fra 0 til 9.

Nyttige bokstavbaserte metategn og kvantifikatorer

  • \w: matcher et hvilket som helst ordtegn (tilsvarer [a-zA-Z0-9_]). Brukes for å matche enkeltbokstaver, sifre eller understrek;
  • \W: matcher et hvilket som helst ikke-ordtegn (alt som ikke matches av \w);
  • \d: matcher et hvilket som helst siffer (tilsvarer [0-9]);
  • \D: matcher et hvilket som helst ikke-siffer tegn;
  • \b: matcher en ordgrense (posisjonen mellom et ordtegn og et ikke-ordtegn). Brukes for å matche hele ord;
  • \B: matcher en posisjon ikke ved en ordgrense.

Kvantifikatorer

Kvantifikatorer angir hvor mange ganger det foregående elementet må forekomme:

  • *: matcher null eller flere ganger; for eksempel matcher \w* en hvilken som helst sekvens av ordtegn, inkludert tom streng;
  • +: matcher én eller flere ganger; for eksempel matcher \w+ én eller flere sammenhengende ordtegn (som et ord);
  • ?: matcher null eller én gang; for eksempel matcher \w? null eller ett ordtegn;
  • {n}: matcher nøyaktig n ganger; for eksempel matcher \w{3} nøyaktig tre ordtegn på rad;
  • {n,}: matcher n eller flere ganger; for eksempel matcher \w{2,} to eller flere ordtegn;
  • {n,m}: matcher mellom n og m ganger; for eksempel matcher \w{2,5} fra to til fem ordtegn på rad.

Eksempler i Python

  • re.findall(r"\w+", "Regex123 is fun!") returnerer alle ord: ["Regex123", "is", "fun"];
  • re.findall(r"\bcat\b", "The cat scattered the catalog.") matcher kun det frittstående ordet "cat";
  • re.findall(r"\w{5}", "apple banana kiwi") finner alle sekvenser med nøyaktig fem ordtegn: ["apple", "banan"].

Disse metategnene og kvantifikatorene er essensielle for å matche bokstaver, ord og ordlignende mønstre i tekst ved bruk av Pythons re-bibliotek.

123456789101112131415
import re text = "User123, admin42, guestX" # Find all digits digits = re.findall(r"[0-9]", text) print("Digits found:", digits) # Find all lowercase letters lowercase_letters = re.findall(r"[a-z]", text) print("Lowercase letters found:", lowercase_letters) # Find all uppercase letters uppercase_letters = re.findall(r"[A-Z]", text) print("Uppercase letters found:", uppercase_letters)

I dette eksemplet bruker du funksjonen re.findall() for å søke etter treff i strengen "User123, admin42, guestX". Mønsteret [0-9] matcher ethvert siffer mellom 0 og 9, så det finner alle individuelle sifre i teksten. Mønsteret [a-z] matcher enhver liten bokstav fra "a" til "z", og [A-Z] matcher enhver stor bokstav fra "A" til "Z". Hver tegnklasse er omsluttet av hakeparenteser, som angir hvilket tegnsett som skal matches. Disse mønstrene er grunnleggende for å hente ut bestemte typer tegn fra tekst.

123456789101112131415161718192021222324252627
import re text = "Hello_123 world! Regex is fun." # \w matches any word character (alphanumeric or underscore) word_chars = re.findall(r"\w", text) print("Word characters (\\w):", word_chars) # \W matches any non-word character non_word_chars = re.findall(r"\W", text) print("Non-word characters (\\W):", non_word_chars) # \b matches word boundaries words = re.findall(r"\b\w+\b", text) print("Words using word boundaries (\\b):", words) # * quantifier: zero or more word characters after 'o' pattern_star = re.findall(r"o\w*", text) print("'o' followed by zero or more word characters (o\\w*):", pattern_star) # + quantifier: one or more word characters after 'R' pattern_plus = re.findall(r"R\w+", text) print("'R' followed by one or more word characters (R\\w+):", pattern_plus) # ? quantifier: 'l' optionally followed by 'e' pattern_question = re.findall(r"le?", text) print("'l' optionally followed by 'e' (le?):", pattern_question)

Her ser du hvordan du kan bruke Pythons re.findall()-funksjon med ulike regex-mønstre for å hente ut informasjon fra strengen "Hello_123 world! Regex is fun.". Her er hva hvert mønster gjør:

  • \w: Mønsteret r"\w" matcher et hvilket som helst ordtegn, som inkluderer bokstaver (både store og små), sifre og understrek (_). I den gitte strengen finner dette hvert enkelt ordtegn, som 'H', 'e', 'l', 'o', '1', '2', '3' osv.

  • \W: Mønsteret r"\W" matcher et hvilket som helst ikke-ordtegn. Dette inkluderer mellomrom, skilletegn og symboler som ikke er bokstaver, sifre eller understrek. I strengen finner dette tegn som mellomrom, utropstegn (!) og punktum (.).

  • \b: Mønsteret r"\b\w+\b" bruker ordgrenser (\b) for å matche hele ord. Her matcher \w+ ett eller flere ordtegn, så dette henter ut hele ord som 'Hello_123', 'world', 'Regex', 'is' og 'fun' som separate elementer.

  • * kvantifikator: Mønsteret r"o\w*" matcher tegnet 'o' etterfulgt av null eller flere ordtegn. Dette betyr at det vil matche 'o' selv om det ikke etterfølges av noen ordtegn, eller det vil fange en sekvens som starter med 'o' og fortsetter med eventuelle påfølgende ordtegn. I strengen finner dette 'o_123' (fra 'Hello_123') og 'orld' (fra 'world').

  • + kvantifikator: Mønsteret r"R\w+" matcher tegnet 'R' etterfulgt av én eller flere ordtegn. Dette er nyttig for å finne ord som starter med 'R' og fortsetter med flere ordtegn. I strengen finner dette 'Regex'.

  • ? kvantifikator: Mønsteret r"le?" matcher bokstaven 'l' valgfritt etterfulgt av 'e'. ?-kvantifikatoren betyr at det foregående tegnet ('e') kan forekomme null eller én gang. Dette mønsteret vil matche både 'l' og 'le' der de forekommer i strengen.

Hvert av disse mønstrene fremhever en sentral egenskap ved regulære uttrykk—matching av spesifikke tegntyper, grenser og gjentatte elementer—som gjør det enklere å hente ut eller analysere informasjon fra tekst i Python.

question mark

Hva matcher regex-mønsteret [a-z]?

Velg det helt riktige svaret

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 2

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Regex-syntaks og grunnleggende mønstre

Regex-syntaks: Byggeklosser

Regulære uttrykk, eller regex, bygges opp ved hjelp av en kombinasjon av litteraler, metategn, tegnklasser og kvantifikatorer. Å forstå disse komponentene er avgjørende for å skrive effektive mønstre.

  • Litteraler er vanlige tegn som matcher seg selv. For eksempel matcher mønsteret "cat" den eksakte strengen "cat";
  • Metategn er spesielle symboler som har unike betydninger i regex. De vanligste metategnene inkluderer:
    • . (punktum): matcher et hvilket som helst enkelt tegn unntatt linjeskift;
    • ^: matcher starten av en streng;
    • $: matcher slutten av en streng;
    • *: matcher null eller flere forekomster av det foregående elementet;
    • +: matcher én eller flere forekomster av det foregående elementet;
    • ?: matcher null eller én forekomst av det foregående elementet.
  • Tegnklasser lar deg matche ett enkelt tegn fra et sett med tegn. For eksempel matcher [abc] "a", "b" eller "c", og [0-9] matcher et hvilket som helst siffer fra 0 til 9.

Nyttige bokstavbaserte metategn og kvantifikatorer

  • \w: matcher et hvilket som helst ordtegn (tilsvarer [a-zA-Z0-9_]). Brukes for å matche enkeltbokstaver, sifre eller understrek;
  • \W: matcher et hvilket som helst ikke-ordtegn (alt som ikke matches av \w);
  • \d: matcher et hvilket som helst siffer (tilsvarer [0-9]);
  • \D: matcher et hvilket som helst ikke-siffer tegn;
  • \b: matcher en ordgrense (posisjonen mellom et ordtegn og et ikke-ordtegn). Brukes for å matche hele ord;
  • \B: matcher en posisjon ikke ved en ordgrense.

Kvantifikatorer

Kvantifikatorer angir hvor mange ganger det foregående elementet må forekomme:

  • *: matcher null eller flere ganger; for eksempel matcher \w* en hvilken som helst sekvens av ordtegn, inkludert tom streng;
  • +: matcher én eller flere ganger; for eksempel matcher \w+ én eller flere sammenhengende ordtegn (som et ord);
  • ?: matcher null eller én gang; for eksempel matcher \w? null eller ett ordtegn;
  • {n}: matcher nøyaktig n ganger; for eksempel matcher \w{3} nøyaktig tre ordtegn på rad;
  • {n,}: matcher n eller flere ganger; for eksempel matcher \w{2,} to eller flere ordtegn;
  • {n,m}: matcher mellom n og m ganger; for eksempel matcher \w{2,5} fra to til fem ordtegn på rad.

Eksempler i Python

  • re.findall(r"\w+", "Regex123 is fun!") returnerer alle ord: ["Regex123", "is", "fun"];
  • re.findall(r"\bcat\b", "The cat scattered the catalog.") matcher kun det frittstående ordet "cat";
  • re.findall(r"\w{5}", "apple banana kiwi") finner alle sekvenser med nøyaktig fem ordtegn: ["apple", "banan"].

Disse metategnene og kvantifikatorene er essensielle for å matche bokstaver, ord og ordlignende mønstre i tekst ved bruk av Pythons re-bibliotek.

123456789101112131415
import re text = "User123, admin42, guestX" # Find all digits digits = re.findall(r"[0-9]", text) print("Digits found:", digits) # Find all lowercase letters lowercase_letters = re.findall(r"[a-z]", text) print("Lowercase letters found:", lowercase_letters) # Find all uppercase letters uppercase_letters = re.findall(r"[A-Z]", text) print("Uppercase letters found:", uppercase_letters)

I dette eksemplet bruker du funksjonen re.findall() for å søke etter treff i strengen "User123, admin42, guestX". Mønsteret [0-9] matcher ethvert siffer mellom 0 og 9, så det finner alle individuelle sifre i teksten. Mønsteret [a-z] matcher enhver liten bokstav fra "a" til "z", og [A-Z] matcher enhver stor bokstav fra "A" til "Z". Hver tegnklasse er omsluttet av hakeparenteser, som angir hvilket tegnsett som skal matches. Disse mønstrene er grunnleggende for å hente ut bestemte typer tegn fra tekst.

123456789101112131415161718192021222324252627
import re text = "Hello_123 world! Regex is fun." # \w matches any word character (alphanumeric or underscore) word_chars = re.findall(r"\w", text) print("Word characters (\\w):", word_chars) # \W matches any non-word character non_word_chars = re.findall(r"\W", text) print("Non-word characters (\\W):", non_word_chars) # \b matches word boundaries words = re.findall(r"\b\w+\b", text) print("Words using word boundaries (\\b):", words) # * quantifier: zero or more word characters after 'o' pattern_star = re.findall(r"o\w*", text) print("'o' followed by zero or more word characters (o\\w*):", pattern_star) # + quantifier: one or more word characters after 'R' pattern_plus = re.findall(r"R\w+", text) print("'R' followed by one or more word characters (R\\w+):", pattern_plus) # ? quantifier: 'l' optionally followed by 'e' pattern_question = re.findall(r"le?", text) print("'l' optionally followed by 'e' (le?):", pattern_question)

Her ser du hvordan du kan bruke Pythons re.findall()-funksjon med ulike regex-mønstre for å hente ut informasjon fra strengen "Hello_123 world! Regex is fun.". Her er hva hvert mønster gjør:

  • \w: Mønsteret r"\w" matcher et hvilket som helst ordtegn, som inkluderer bokstaver (både store og små), sifre og understrek (_). I den gitte strengen finner dette hvert enkelt ordtegn, som 'H', 'e', 'l', 'o', '1', '2', '3' osv.

  • \W: Mønsteret r"\W" matcher et hvilket som helst ikke-ordtegn. Dette inkluderer mellomrom, skilletegn og symboler som ikke er bokstaver, sifre eller understrek. I strengen finner dette tegn som mellomrom, utropstegn (!) og punktum (.).

  • \b: Mønsteret r"\b\w+\b" bruker ordgrenser (\b) for å matche hele ord. Her matcher \w+ ett eller flere ordtegn, så dette henter ut hele ord som 'Hello_123', 'world', 'Regex', 'is' og 'fun' som separate elementer.

  • * kvantifikator: Mønsteret r"o\w*" matcher tegnet 'o' etterfulgt av null eller flere ordtegn. Dette betyr at det vil matche 'o' selv om det ikke etterfølges av noen ordtegn, eller det vil fange en sekvens som starter med 'o' og fortsetter med eventuelle påfølgende ordtegn. I strengen finner dette 'o_123' (fra 'Hello_123') og 'orld' (fra 'world').

  • + kvantifikator: Mønsteret r"R\w+" matcher tegnet 'R' etterfulgt av én eller flere ordtegn. Dette er nyttig for å finne ord som starter med 'R' og fortsetter med flere ordtegn. I strengen finner dette 'Regex'.

  • ? kvantifikator: Mønsteret r"le?" matcher bokstaven 'l' valgfritt etterfulgt av 'e'. ?-kvantifikatoren betyr at det foregående tegnet ('e') kan forekomme null eller én gang. Dette mønsteret vil matche både 'l' og 'le' der de forekommer i strengen.

Hvert av disse mønstrene fremhever en sentral egenskap ved regulære uttrykk—matching av spesifikke tegntyper, grenser og gjentatte elementer—som gjør det enklere å hente ut eller analysere informasjon fra tekst i Python.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 2
some-alt