Hurtig vejledning til regulære udtryk

Til G Suite og Office 360 brugere og for Python-udviklere

(Badi James) (20. maj 2020)

Sprog er sjældent enkle at arbejde med, når man udvinder indsigt. Selv opgaven med at finde og tælle, hvor mange gange et ord vises i en teksttekst, en opgave, der ved første øjekast ser ud til at være enkel at gøre med moderne tekstbehandlingsprogrammer og kodningsbiblioteker, kan løbe ind i komplikationer hurtigt.

Tag eksemplet med at prøve at finde ud af, om himlen er nævnt i en teksttekst. Den enkle tilgang ville være at bare:

  • Ctrl + F “sky” (hvis du bruger en teksteditor eller tekstbehandler)
  • “sky” i body\_of\_text (hvis du skriver en script i python)

Imidlertid vil begge tilgange ikke altid finde omtale af himlen og vil undertiden give falske positive. Begrænsningerne ved disse tilgange kommer fra, hvordan de søger efter den nøjagtige rækkefølge af tegn s-k-y. Nedenfor er nogle af sprogets funktioner, der får denne tilgang til at mislykkes:

  • Store bogstaver: Hvis en sætning begynder med “Sky” eller “Sky” vises som en del af et substantiv (eller hvis forfatteren af ​​teksten havde en brudt hovedlås-nøgle) disse optrædener af ordet findes ikke.
  • Stavekontrol af andre ord: Tilstedeværelsen af ​​ord som “pe sky ”,“ ri sky ”osv. vil medføre “Himmel” skal opdages fejlagtigt.
  • Flertal: “Himmel” vil ikke blive opdaget.

Mange tekstbehandlingsprogrammer og tekstredigeringsprogrammer har muligheder tilgængelige i deres “Find og Erstat ”-funktioner til løsning af de to første af ovenstående problemer. Faktisk er indstillinger som “Ignorer sag” og “Match hele ordet” normalt slået til som standard. Imidlertid vil spørgsmålet om manglende alternative former for et ord (flertal, tidspunkter, køn osv.) Eller alternative stavemåder (for eksempel de mange variationer af navnet Mohammad) stadig være til stede.

Med Python kan du udvide din search\_phrase i body\_of\_text kodelinje ved at tilføje betingelser for at dække alle variationer af ordet og for at udelukke falske positive matches. Men det kan være svært at gøre og kan gøre din kode til denne angiveligt enkle opgave lang og vanskelig at vedligeholde.

Indtast Regular Expressions

Regular expressions (eller regex for kort) er kraftfulde værktøjer til at finde mønstre af tegn inde i tekst. Ideen er, i stedet for at give din kode eller tekstbehandler en bestemt rækkefølge af tegn at finde, giver du det et mønster (et regulært udtryk), der beskriver de regler, som du gerne vil bruge til at udvide eller begrænse, hvilke segmenter af teksten der matcher det givne mønster.

At specificere disse regler opnås ved at tilføje specialtegn til dit regulære udtryk. Tag ovenstående eksempel på “himmel”. Et regelmæssigt udtryk for “\ bsk (y | ies) \ b” vil matche både “sky” og “sky”, men vil ikke matche “irriterende”, “risikabelt” eller noget andet ord, der indeholder s-k-y. Lad os nedbryde formålet med hvert af de specialtegn, vi har tilføjet:

Den” \ b “, der flankerer hver ende af vores udtryk, angiver ordgrænser, dvs. hvide mellemrum, tegnsætning, begyndelsen eller slutningen af ​​teksten osv. Dette er hvad der forhindrer regex i at matche andre ord, hvor “sky” er en del af stavemåden (som “irriterende” eller “Skype”).

Parenteserne opretter en capture-gruppe. Dette bruges til at specificere, hvilken del af din regex du vil anvende en bestemt regel på. Inden for denne fangstgruppe har vi “|” (aka den lodrette bjælke). Dette fungerer som en OR-operator og specificerer, at enten udtrykket til venstre (“y”) eller udtrykket til højre (“s”) kan udgøre en del af et match. Dette gør det muligt for vores regex at matche både ental “himmel” og flertal “himmel”.

For at løse problemet med store bogstaver er dette normalt et ikke-spørgsmål som indstillingen Ignorer sag i Find funktioner i de fleste tekstbehandlingsprogrammer og teksteditorer kan også bruges ved søgning ved hjælp af regex. Når du bruger Python regex-biblioteket re, th e IGNORECASE -flagget kan bruges, når du søger via regex (mere om det senere). Uden denne mulighed eller dette flag kan vi dog matche “Sky”, “sky”, “Skies” og “sky” ved at udvide vores regex som sådan: “\ b (S | s) k (y | ies) \ b”

Så som du kan se, har regelmæssige udtryk gjort vores søgning efter himlen meget mere frugtbar! Dette var dog relativt simpelt eksempel på, hvad regex kan gøre. Nedenfor er et par flere eksempler, der demonstrerer kraften og alsidigheden af ​​regulære udtryk:

  • M (u | o) hamm? (E | a) (d | t) matcher de fleste stavevariationer af Mohammad
  • (? Mountain) Bike matches Bike men ikke Mountain Bike
  • kaffe (?! dato) matcher kaffe men ikke kaffedato
  • (https: \ / \ /)? (www \.)? [a- z0–9] + \. [az] + (\. [az] +)? matcher mange webadresser
  • [a-zA-Z0–9 -\_.] + @ [a-zA-Z] + \. [a-zA-Z] + ( \. [a-zA-Z] +)? matcher mange e-mail-adresser

regexr.com: Et godt websted til læring af Regex

Eksemplerne beskrevet tidligere kan have fået dig til at tænke “det ser nyttigt ud, men hvordan skal jeg huske alle de forskellige specialer tegn og hvad de gør? Og hvordan kan jeg se, om mit regulære udtryk fungerer som beregnet? ”. Bare rolig, regexr.com er her for at hjælpe.

På dette websted kan du oprette regulære udtryk ved hjælp af de medfølgende snydeark. som guider, og indsæt noget tekst for at teste dem. Eventuelle matches fremhæves i teksten, og et antal tællinger vises. Din regex er farvekodet og praktiske værktøjstip beskriver, hvad hver karakter gør, når du holder musen over dem. Dette er fantastisk til at lære regex ved hjælp af regex.

Brug af Regex i Google Docs og Google Sheets

Brug af Regex i disse G Suite-apps er ligetil og brugervenligt. Tryk blot på Ctrl + F, og klik derefter på de tre lodrette prikker i søgefeltet, der vises i øverste venstre hjørne af browseren. Alternativt kan du navigere til Rediger -> Find og erstat i rullemenuerne. Dette åbner vinduet Find og erstat. Her finder du afkrydsningsfeltet Match ved hjælp af regulære udtryk (Docs) eller Søg ved hjælp af regulære udtryk (Sheets). Når du er valgt, kan du indsætte dit regulære udtryk i feltet Find . Eventuelle matches fremhæves i dit dokument, og et antal matches vises i feltet Find . Du kan stadig bruge de andre mulige Find og erstat-tilgængelige, såsom Match case, og din regex opfører sig i overensstemmelse hermed.

Brug af “Regex” (jokertegn) i MS Word og Excel

Regelmæssige udtryk understøttes desværre ikke i Word og Excel. De tillader dog “wildcards”, som opfører sig meget på samme måde, selvom de anvendte symboler undertiden er forskellige.

I Word kan søgning ved hjælp af wildcards opnås ved hjælp af funktionen Avanceret søgning og erstat. Detaljer om, hvordan du navigerer til denne funktion, hvordan du aktiverer jokertegn, og hvad hvert jokertegn gør, findes i denne vejledning , der findes på Office-supportwebstedet.

I Excel er det ikke umiddelbart indlysende, hvordan man søger ved hjælp af jokertegn, da det ikke er en del af nogen søgefunktion. Du kan dog finde celler, der matcher din søgeudtryk, der indeholder jokertegn, ved at filtrere dine ark ved hjælp af avancerede filtre. Følg denne vejledning fra Office-supportwebstedet, hvor du kan finde ud af, hvordan du bruger wildcards som en del af dine avancerede filtre under “Wildcard-kriterier”.

Hvor får du adgang til avancerede filtre i Excel, som tillader brug af jokertegn

Brug af regex i Python

re biblioteket leveres som en del af basis-Python-installationen. Dette bibliotek har mange funktioner, der giver dig mulighed for at analysere og manipulere strenge ved hjælp af regulære udtryk.

Et par nøglefunktioner er:

  • gen.søgning ( mønster, streng, flag = 0 ) : Dette søger efter den første placering i streng hvor mønster (dit regulære udtryk) matcher, returnerer et matchobjekt der beskriver matchet, eller ingen, hvis der ikke blev fundet nogen match.
  • re.match ( mønster , string, flags = 0 ) : Opfører sig som re.search (), bortset fra at det kun ser efter matches, der starter i begyndelsen af ​​ streng
  • re.split ( mønster, streng, flag = 0 ): Opdeler streng i en liste ved at matche mønster , ligesom metoden str.split (), men med regex.
  • re.sub ( mønster, repl, string, count = 0, flags = 0 ): Erstat forekomster af mønster i streng med repl, hvis repl er en streng, eller med output repl hvis repl er en funktion, der tager et enkelt matchobjekt som argument

Parameteren flags tillader dig til at angive flag såsom re.IGNORECASE der ændrer opførelsen af ​​dine regex-mønstre i overensstemmelse hermed.

Når du skriver dine regex-mønstre som strenge i python, er det nyttigt at bruge rå strenge, da disse giver dig mulighed for at bruge specialtegn som “\” uden at skulle undslippe dem. For eksempel i stedet for:

  • mønster = “\\ bsk (y | ies) \\ b”

Brug:

  • mønster = r ”\ bsk (y | ies) \ b”
Et eksempel fra re-dokumentationen, der viser brugen af ​​regex med positivt lookbehind

Fuld dokumentation for re bibliotek kan findes her: https://docs.python.org/3/library/re.html # module-re

Happy Matching !!

Som du kan se, kan regulære udtryk gøre så mange opgaver meget lettere, når du arbejder med tekst. Selv at lære kun et par specialtegn kan give mulighed for så mange nye anvendelser af Find og erstat værktøjer. Mange tekstbehandlingsprogrammer og teksteditorer har anerkendt deres anvendelighed og har tilladt support til regulære udtryk eller har implementeret deres egne funktioner for at give lignende funktionalitet. Kendskab til regulære udtryk er et praktisk værktøj i værktøjssættet til enhver forfatter, softwareudvikler eller enhver, der ofte analyserer tekst.

AI Palette hjælper FMCG-virksomheder med deres produktinnovation. Vi bruger kunstig intelligens & Machine Learning til at hjælpe FMCG-virksomheder med at skabe forbrugervindende produkter.