Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Regex-syntaks og grundlæggende mønstre | Introduction to Regular Expressions
Python Regulære Udtryk

Regex-syntaks og grundlæggende mønstre

Stryg for at vise menuen

Regex-syntaks: Byggeklodser

Regulære udtryk, eller regex, konstrueres ved hjælp af en kombination af litteraler, metategn, tegnklasser og kvantifikatorer. Forståelse af disse komponenter er afgørende for at skrive effektive mønstre.

  • Litteraler er almindelige tegn, der matcher sig selv. For eksempel matcher mønsteret "cat" den præcise streng "cat";
  • Metategn er specielle symboler, der har unikke betydninger i regex. De mest almindelige metategn omfatter:
    • . (punktum): matcher ethvert enkelt tegn undtagen linjeskift;
    • ^: matcher begyndelsen af en streng;
    • $: matcher slutningen af en streng;
    • *: matcher nul eller flere forekomster af det foregående element;
    • +: matcher en eller flere forekomster af det foregående element;
    • ?: matcher nul eller én forekomst af det foregående element.
  • Tegnklasser gør det muligt at matche et hvilket som helst tegn fra et sæt af tegn. For eksempel matcher [abc] "a", "b" eller "c", og [0-9] matcher ethvert ciffer fra 0 til 9.

Nyttige bogstavbaserede metategn og kvantifikatorer

  • \w: matcher ethvert ordtegn (svarende til [a-zA-Z0-9_]). Bruges til at matche enkelte bogstaver, cifre eller understregningstegn;
  • \W: matcher ethvert ikke-ordtegn (alt, der ikke matches af \w);
  • \d: matcher ethvert ciffer (svarende til [0-9]);
  • \D: matcher ethvert ikke-ciffer tegn;
  • \b: matcher en ordgrænse (positionen mellem et ordtegn og et ikke-ordtegn). Bruges til at matche hele ord;
  • \B: matcher en position, der ikke er ved en ordgrænse.

Kvantifikatorer

Kvantifikatorer angiver, hvor mange gange det foregående element skal forekomme:

  • *: matcher nul eller flere gange; for eksempel matcher \w* enhver sekvens af ordtegn, inklusive en tom streng;
  • +: matcher en eller flere gange; for eksempel matcher \w+ en eller flere sammenhængende ordtegn (såsom et ord);
  • ?: matcher nul eller én gang; for eksempel matcher \w? nul eller ét ordtegn;
  • {n}: matcher præcis n gange; for eksempel matcher \w{3} præcis tre ordtegn i træk;
  • {n,}: matcher n eller flere gange; for eksempel matcher \w{2,} to eller flere ordtegn;
  • {n,m}: matcher mellem n og m gange; for eksempel matcher \w{2,5} fra to til fem ordtegn i træk.

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 selvstændige ord "cat";
  • re.findall(r"\w{5}", "apple banana kiwi") finder alle sekvenser af præcis fem ordtegn: ["apple", "banan"].

Disse metategn og kvantifikatorer er essentielle for at matche bogstaver, ord og ordlignende mønstre i tekst ved brug af 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 eksempel bruges funktionen re.findall() til at søge efter match i strengen "User123, admin42, guestX". Mønstret [0-9] matcher ethvert ciffer mellem 0 og 9, så det finder alle individuelle cifre i teksten. Mønstret [a-z] matcher ethvert lille bogstav fra "a" til "z", og [A-Z] matcher ethvert stort bogstav fra "A" til "Z". Hver tegnklasse er omsluttet af kantede parenteser, hvilket angiver det interval eller sæt af tegn, der skal matches. Disse mønstre er grundlæggende for at udtrække 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 kan du se, hvordan du bruger Pythons re.findall()-funktion med forskellige regex-mønstre til at udtrække information fra strengen "Hello_123 world! Regex is fun.". Her er, hvad hvert mønster gør:

  • \w: Mønstret r"\w" matcher ethvert ordtegn, hvilket inkluderer bogstaver (både store og små), cifre og underscore (_). I den givne streng finder dette hvert enkelt ordtegn, såsom 'H', 'e', 'l', 'o', '1', '2', '3' osv.

  • \W: Mønstret r"\W" matcher ethvert ikke-ordtegn. Dette inkluderer mellemrum, tegnsætning og symboler, der ikke er bogstaver, cifre eller underscores. I strengen finder dette tegn som mellemrum, udråbstegn (!) og punktum (.).

  • \b: Mønstret r"\b\w+\b" bruger ordgrænser (\b) til at matche hele ord. Her matcher \w+ et eller flere ordtegn, så dette udtrækker hele ord som 'Hello_123', 'world', 'Regex', 'is' og 'fun' som separate elementer.

  • * kvantificerer: Mønstret r"o\w*" matcher tegnet 'o' efterfulgt af nul eller flere ordtegn. Det betyder, at det vil matche 'o', selv hvis det ikke efterfølges af nogen ordtegn, eller det vil fange en sekvens, der starter med 'o' og fortsætter gennem eventuelle efterfølgende ordtegn. I strengen finder dette 'o_123' (fra 'Hello_123') og 'orld' (fra 'world').

  • + kvantificerer: Mønstret r"R\w+" matcher tegnet 'R' efterfulgt af et eller flere ordtegn. Dette er nyttigt til at finde ord, der starter med 'R' og fortsætter med yderligere ordtegn. I strengen finder dette 'Regex'.

  • ? kvantificerer: Mønstret r"le?" matcher bogstavet 'l' eventuelt efterfulgt af 'e'. ?-kvantificeren betyder, at det foregående tegn ('e') kan forekomme nul eller én gang. Dette mønster vil matche både 'l' og 'le', hvor de end måtte forekomme i strengen.

Hvert af disse mønstre fremhæver en central egenskab ved regulære udtryk—at matche specifikke tegntyper, grænser og gentagne elementer—hvilket gør det lettere at udtrække eller analysere information fra tekst i Python.

question mark

Hvad matcher regex-mønstret [a-z]?

Vælg det korrekte svar

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 2

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Regex-syntaks og grundlæggende mønstre

Regex-syntaks: Byggeklodser

Regulære udtryk, eller regex, konstrueres ved hjælp af en kombination af litteraler, metategn, tegnklasser og kvantifikatorer. Forståelse af disse komponenter er afgørende for at skrive effektive mønstre.

  • Litteraler er almindelige tegn, der matcher sig selv. For eksempel matcher mønsteret "cat" den præcise streng "cat";
  • Metategn er specielle symboler, der har unikke betydninger i regex. De mest almindelige metategn omfatter:
    • . (punktum): matcher ethvert enkelt tegn undtagen linjeskift;
    • ^: matcher begyndelsen af en streng;
    • $: matcher slutningen af en streng;
    • *: matcher nul eller flere forekomster af det foregående element;
    • +: matcher en eller flere forekomster af det foregående element;
    • ?: matcher nul eller én forekomst af det foregående element.
  • Tegnklasser gør det muligt at matche et hvilket som helst tegn fra et sæt af tegn. For eksempel matcher [abc] "a", "b" eller "c", og [0-9] matcher ethvert ciffer fra 0 til 9.

Nyttige bogstavbaserede metategn og kvantifikatorer

  • \w: matcher ethvert ordtegn (svarende til [a-zA-Z0-9_]). Bruges til at matche enkelte bogstaver, cifre eller understregningstegn;
  • \W: matcher ethvert ikke-ordtegn (alt, der ikke matches af \w);
  • \d: matcher ethvert ciffer (svarende til [0-9]);
  • \D: matcher ethvert ikke-ciffer tegn;
  • \b: matcher en ordgrænse (positionen mellem et ordtegn og et ikke-ordtegn). Bruges til at matche hele ord;
  • \B: matcher en position, der ikke er ved en ordgrænse.

Kvantifikatorer

Kvantifikatorer angiver, hvor mange gange det foregående element skal forekomme:

  • *: matcher nul eller flere gange; for eksempel matcher \w* enhver sekvens af ordtegn, inklusive en tom streng;
  • +: matcher en eller flere gange; for eksempel matcher \w+ en eller flere sammenhængende ordtegn (såsom et ord);
  • ?: matcher nul eller én gang; for eksempel matcher \w? nul eller ét ordtegn;
  • {n}: matcher præcis n gange; for eksempel matcher \w{3} præcis tre ordtegn i træk;
  • {n,}: matcher n eller flere gange; for eksempel matcher \w{2,} to eller flere ordtegn;
  • {n,m}: matcher mellem n og m gange; for eksempel matcher \w{2,5} fra to til fem ordtegn i træk.

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 selvstændige ord "cat";
  • re.findall(r"\w{5}", "apple banana kiwi") finder alle sekvenser af præcis fem ordtegn: ["apple", "banan"].

Disse metategn og kvantifikatorer er essentielle for at matche bogstaver, ord og ordlignende mønstre i tekst ved brug af 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 eksempel bruges funktionen re.findall() til at søge efter match i strengen "User123, admin42, guestX". Mønstret [0-9] matcher ethvert ciffer mellem 0 og 9, så det finder alle individuelle cifre i teksten. Mønstret [a-z] matcher ethvert lille bogstav fra "a" til "z", og [A-Z] matcher ethvert stort bogstav fra "A" til "Z". Hver tegnklasse er omsluttet af kantede parenteser, hvilket angiver det interval eller sæt af tegn, der skal matches. Disse mønstre er grundlæggende for at udtrække 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 kan du se, hvordan du bruger Pythons re.findall()-funktion med forskellige regex-mønstre til at udtrække information fra strengen "Hello_123 world! Regex is fun.". Her er, hvad hvert mønster gør:

  • \w: Mønstret r"\w" matcher ethvert ordtegn, hvilket inkluderer bogstaver (både store og små), cifre og underscore (_). I den givne streng finder dette hvert enkelt ordtegn, såsom 'H', 'e', 'l', 'o', '1', '2', '3' osv.

  • \W: Mønstret r"\W" matcher ethvert ikke-ordtegn. Dette inkluderer mellemrum, tegnsætning og symboler, der ikke er bogstaver, cifre eller underscores. I strengen finder dette tegn som mellemrum, udråbstegn (!) og punktum (.).

  • \b: Mønstret r"\b\w+\b" bruger ordgrænser (\b) til at matche hele ord. Her matcher \w+ et eller flere ordtegn, så dette udtrækker hele ord som 'Hello_123', 'world', 'Regex', 'is' og 'fun' som separate elementer.

  • * kvantificerer: Mønstret r"o\w*" matcher tegnet 'o' efterfulgt af nul eller flere ordtegn. Det betyder, at det vil matche 'o', selv hvis det ikke efterfølges af nogen ordtegn, eller det vil fange en sekvens, der starter med 'o' og fortsætter gennem eventuelle efterfølgende ordtegn. I strengen finder dette 'o_123' (fra 'Hello_123') og 'orld' (fra 'world').

  • + kvantificerer: Mønstret r"R\w+" matcher tegnet 'R' efterfulgt af et eller flere ordtegn. Dette er nyttigt til at finde ord, der starter med 'R' og fortsætter med yderligere ordtegn. I strengen finder dette 'Regex'.

  • ? kvantificerer: Mønstret r"le?" matcher bogstavet 'l' eventuelt efterfulgt af 'e'. ?-kvantificeren betyder, at det foregående tegn ('e') kan forekomme nul eller én gang. Dette mønster vil matche både 'l' og 'le', hvor de end måtte forekomme i strengen.

Hvert af disse mønstre fremhæver en central egenskab ved regulære udtryk—at matche specifikke tegntyper, grænser og gentagne elementer—hvilket gør det lettere at udtrække eller analysere information fra tekst i Python.

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 2
some-alt