Regex-Syntax och Grundläggande Mönster
Svep för att visa menyn
Regex-syntax: Byggstenar
Reguljära uttryck, eller regex, konstrueras med en kombination av litteraler, metatecken, teckenklasser och kvantifikatorer. Förståelse för dessa komponenter är avgörande för att skriva effektiva mönster.
- Litteraler är vanliga tecken som matchar sig själva. Till exempel matchar mönstret
"cat"exakt strängen"cat"; - Metatecken är speciella symboler som har unika betydelser i regex. De vanligaste metatecknen inkluderar:
.(punkt): matchar vilket enskilt tecken som helst utom radbrytning;^: matchar början av en sträng;$: matchar slutet av en sträng;*: matchar noll eller fler förekomster av föregående element;+: matchar en eller fler förekomster av föregående element;?: matchar noll eller en förekomst av föregående element.
- Teckenklasser låter dig matcha ett valfritt tecken från en uppsättning tecken. Till exempel matchar
[abc]"a","b"eller"c", och[0-9]matchar vilken siffra som helst från 0 till 9.
Användbara bokstavsbaserade metatecken och kvantifikatorer
\w: matchar valfritt ordtecken (motsvarar[a-zA-Z0-9_]). Används för att matcha enskilda bokstäver, siffror eller understreck;\W: matchar valfritt icke-ordtecken (allt som inte matchas av\w);\d: matchar valfri siffra (motsvarar[0-9]);\D: matchar valfritt icke-siffra tecken;\b: matchar en ordgräns (positionen mellan ett ordtecken och ett icke-ordtecken). Används för att matcha ord som hela enheter;\B: matchar en position inte vid en ordgräns.
Kvantifikatorer
Kvantifikatorer anger hur många gånger föregående element måste förekomma:
*: matchar noll eller fler gånger; till exempel,\w*matchar vilken sekvens av ordtecken som helst, inklusive en tom sträng;+: matchar en eller fler gånger; till exempel,\w+matchar en eller flera på varandra följande ordtecken (som ett ord);?: matchar noll eller en gång; till exempel,\w?matchar noll eller ett ordtecken;{n}: matchar exakt n gånger; till exempel,\w{3}matchar exakt tre ordtecken i rad;{n,}: matchar n eller fler gånger; till exempel,\w{2,}matchar två eller fler ordtecken;{n,m}: matchar mellan n och m gånger; till exempel,\w{2,5}matchar från två till fem ordtecken i rad.
Exempel i Python
re.findall(r"\w+", "Regex123 is fun!")returnerar alla ord:["Regex123", "is", "fun"];re.findall(r"\bcat\b", "The cat scattered the catalog.")matchar endast det fristående ordet"cat";re.findall(r"\w{5}", "apple banana kiwi")hittar alla sekvenser av exakt fem ordtecken:["apple", "banan"].
Dessa metatecken och kvantifikatorer är avgörande för att matcha bokstäver, ord och ordliknande mönster i text med hjälp 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 detta exempel används funktionen re.findall() för att söka efter träffar i strängen "User123, admin42, guestX". Mönstret [0-9] matchar vilken siffra som helst mellan 0 och 9, så det hittar alla enskilda siffror i texten. Mönstret [a-z] matchar vilken liten bokstav som helst från "a" till "z", och [A-Z] matchar vilken stor bokstav som helst från "A" till "Z". Varje teckenklass omges av hakparenteser och anger det intervall eller den uppsättning tecken som ska matchas. Dessa mönster är grundläggande för att extrahera specifika typer av tecken från text.
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)
Här ser du hur du kan använda Pythons re.findall()-funktion med olika regexmönster för att extrahera information från strängen "Hello_123 world! Regex is fun.". Nedan beskrivs vad varje mönster gör:
-
\w: Mönstretr"\w"matchar alla ordtecken, vilket inkluderar bokstäver (både versaler och gemener), siffror och understreck (_). I den givna strängen hittar detta varje enskilt ordtecken, såsom'H','e','l','o','1','2','3'och så vidare. -
\W: Mönstretr"\W"matchar alla icke-ordtecken. Detta inkluderar mellanslag, skiljetecken och symboler som inte är bokstäver, siffror eller understreck. I strängen hittar detta tecken som mellanslag, utropstecken (!) och punkt (.). -
\b: Mönstretr"\b\w+\b"använder ordgränser (\b) för att matcha hela ord. Här matchar\w+ett eller flera ordtecken, så detta extraherar hela ord som'Hello_123','world','Regex','is'och'fun'som separata element. -
*kvantifierare: Mönstretr"o\w*"matchar tecknet'o'följt av noll eller fler ordtecken. Det innebär att det matchar'o'även om det inte följs av några ordtecken, eller så fångar det en sekvens som börjar med'o'och fortsätter med eventuella efterföljande ordtecken. I strängen hittar detta'o_123'(från'Hello_123') och'orld'(från'world'). -
+kvantifierare: Mönstretr"R\w+"matchar tecknet'R'följt av ett eller flera ordtecken. Detta är användbart för att hitta ord som börjar med'R'och fortsätter med ytterligare ordtecken. I strängen hittar detta'Regex'. -
?kvantifierare: Mönstretr"le?"matchar bokstaven'l'eventuellt följd av'e'. Kvantifieraren?innebär att det föregående tecknet ('e') kan förekomma noll eller en gång. Detta mönster matchar både'l'och'le'var de än förekommer i strängen.
Varje av dessa mönster belyser en viktig egenskap hos reguljära uttryck—att matcha specifika teckentyper, gränser och upprepade element—vilket gör det enklare att extrahera eller analysera information från text i Python.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Regex-Syntax och Grundläggande Mönster
Regex-syntax: Byggstenar
Reguljära uttryck, eller regex, konstrueras med en kombination av litteraler, metatecken, teckenklasser och kvantifikatorer. Förståelse för dessa komponenter är avgörande för att skriva effektiva mönster.
- Litteraler är vanliga tecken som matchar sig själva. Till exempel matchar mönstret
"cat"exakt strängen"cat"; - Metatecken är speciella symboler som har unika betydelser i regex. De vanligaste metatecknen inkluderar:
.(punkt): matchar vilket enskilt tecken som helst utom radbrytning;^: matchar början av en sträng;$: matchar slutet av en sträng;*: matchar noll eller fler förekomster av föregående element;+: matchar en eller fler förekomster av föregående element;?: matchar noll eller en förekomst av föregående element.
- Teckenklasser låter dig matcha ett valfritt tecken från en uppsättning tecken. Till exempel matchar
[abc]"a","b"eller"c", och[0-9]matchar vilken siffra som helst från 0 till 9.
Användbara bokstavsbaserade metatecken och kvantifikatorer
\w: matchar valfritt ordtecken (motsvarar[a-zA-Z0-9_]). Används för att matcha enskilda bokstäver, siffror eller understreck;\W: matchar valfritt icke-ordtecken (allt som inte matchas av\w);\d: matchar valfri siffra (motsvarar[0-9]);\D: matchar valfritt icke-siffra tecken;\b: matchar en ordgräns (positionen mellan ett ordtecken och ett icke-ordtecken). Används för att matcha ord som hela enheter;\B: matchar en position inte vid en ordgräns.
Kvantifikatorer
Kvantifikatorer anger hur många gånger föregående element måste förekomma:
*: matchar noll eller fler gånger; till exempel,\w*matchar vilken sekvens av ordtecken som helst, inklusive en tom sträng;+: matchar en eller fler gånger; till exempel,\w+matchar en eller flera på varandra följande ordtecken (som ett ord);?: matchar noll eller en gång; till exempel,\w?matchar noll eller ett ordtecken;{n}: matchar exakt n gånger; till exempel,\w{3}matchar exakt tre ordtecken i rad;{n,}: matchar n eller fler gånger; till exempel,\w{2,}matchar två eller fler ordtecken;{n,m}: matchar mellan n och m gånger; till exempel,\w{2,5}matchar från två till fem ordtecken i rad.
Exempel i Python
re.findall(r"\w+", "Regex123 is fun!")returnerar alla ord:["Regex123", "is", "fun"];re.findall(r"\bcat\b", "The cat scattered the catalog.")matchar endast det fristående ordet"cat";re.findall(r"\w{5}", "apple banana kiwi")hittar alla sekvenser av exakt fem ordtecken:["apple", "banan"].
Dessa metatecken och kvantifikatorer är avgörande för att matcha bokstäver, ord och ordliknande mönster i text med hjälp 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 detta exempel används funktionen re.findall() för att söka efter träffar i strängen "User123, admin42, guestX". Mönstret [0-9] matchar vilken siffra som helst mellan 0 och 9, så det hittar alla enskilda siffror i texten. Mönstret [a-z] matchar vilken liten bokstav som helst från "a" till "z", och [A-Z] matchar vilken stor bokstav som helst från "A" till "Z". Varje teckenklass omges av hakparenteser och anger det intervall eller den uppsättning tecken som ska matchas. Dessa mönster är grundläggande för att extrahera specifika typer av tecken från text.
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)
Här ser du hur du kan använda Pythons re.findall()-funktion med olika regexmönster för att extrahera information från strängen "Hello_123 world! Regex is fun.". Nedan beskrivs vad varje mönster gör:
-
\w: Mönstretr"\w"matchar alla ordtecken, vilket inkluderar bokstäver (både versaler och gemener), siffror och understreck (_). I den givna strängen hittar detta varje enskilt ordtecken, såsom'H','e','l','o','1','2','3'och så vidare. -
\W: Mönstretr"\W"matchar alla icke-ordtecken. Detta inkluderar mellanslag, skiljetecken och symboler som inte är bokstäver, siffror eller understreck. I strängen hittar detta tecken som mellanslag, utropstecken (!) och punkt (.). -
\b: Mönstretr"\b\w+\b"använder ordgränser (\b) för att matcha hela ord. Här matchar\w+ett eller flera ordtecken, så detta extraherar hela ord som'Hello_123','world','Regex','is'och'fun'som separata element. -
*kvantifierare: Mönstretr"o\w*"matchar tecknet'o'följt av noll eller fler ordtecken. Det innebär att det matchar'o'även om det inte följs av några ordtecken, eller så fångar det en sekvens som börjar med'o'och fortsätter med eventuella efterföljande ordtecken. I strängen hittar detta'o_123'(från'Hello_123') och'orld'(från'world'). -
+kvantifierare: Mönstretr"R\w+"matchar tecknet'R'följt av ett eller flera ordtecken. Detta är användbart för att hitta ord som börjar med'R'och fortsätter med ytterligare ordtecken. I strängen hittar detta'Regex'. -
?kvantifierare: Mönstretr"le?"matchar bokstaven'l'eventuellt följd av'e'. Kvantifieraren?innebär att det föregående tecknet ('e') kan förekomma noll eller en gång. Detta mönster matchar både'l'och'le'var de än förekommer i strängen.
Varje av dessa mönster belyser en viktig egenskap hos reguljära uttryck—att matcha specifika teckentyper, gränser och upprepade element—vilket gör det enklare att extrahera eller analysera information från text i Python.
Tack för dina kommentarer!