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.
123456789101112131415import 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.
123456789101112131415161718192021222324252627import 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ønsteretr"\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ønsteretr"\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ønsteretr"\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ønsteretr"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ønsteretr"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ønsteretr"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.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
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.
123456789101112131415import 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.
123456789101112131415161718192021222324252627import 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ønsteretr"\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ønsteretr"\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ønsteretr"\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ønsteretr"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ønsteretr"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ønsteretr"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.
Takk for tilbakemeldingene dine!