raatools/

Regex-testare

Testa regex-mönster med live-matchning, flaggor och detaljer.

Vad är reguljära uttryck?

Reguljära uttryck (regex) är mönster som beskriver textsträngar. De är ett kraftfullt verktyg för textsökning, validering, extrahering och ersättning. Regex-syntax definierar ett mönster som en sökmotor matchar mot inmatningstext. Till exempel matchar mönstret \d+ en eller flera siffror och [A-Za-z] matchar en enda bokstav.

Regex stöds av praktiskt taget alla programmeringsspråk (JavaScript, Python, Java, C#, Go, Rust, PHP) och textverktyg (grep, sed, awk, Vim). Vanliga användningsområden inkluderar: validering av e-postadresser och telefonnummer, extrahering av data från loggar, sök-och-ersätt i textredigerare, routing i webbramverk och inmatningsvalidering i formulär.

Hur du använder detta verktyg

Ange ett regex-mönster och en testtext. Verktyget markerar alla matchningar i realtid, visar matchgrupper med index, förklarar mönstret komponent för komponent och testar mönstret mot varje rad. Välj mellan JavaScript, Python och PCRE-syntax. Flaggor (g, i, m, s) kan ställas in individuellt.

Vanliga regex-monster

  • E-postadresser: ^[^\s@]+@[^\s@]+\.[^\s@]+$ -- matchar standardformat for e-post.
  • URL:er: https?://\S+ -- matchar URL:er som borjar med http eller https.
  • IPv4-adresser: matchar det standardiserade prickade decimalformatet som 192.168.1.1 med siffrkvantifierare.
  • Datum: matchar datum i YYYY-MM-DD-format med fyrsiffrigt ar och tvasiffrig manad och dag.
  • Ord med stor bokstav: [A-Z][a-z]+ -- matchar ord som borjar med en versal.

Regex-flaggor forklarade

  • g: g (Global): Hittar alla matchningar i texten, inte bara den forsta.
  • i: i (Skiftlagesokanslig): Gor att monstret matchar oavsett bokstavsstorlek.
  • m: m (Flerradig): Gor att ^ och $ matchar borjan och slutet av varje rad, inte bara hela strangen.
  • s: s (Dotall): Gor att metatecknet . aven matchar radbrytningar.

Fangstgrupper

Parenteser () skapar fangstgrupper som extraherar specifika delar av en matchning. Varje grupp numreras fran 1. Till exempel tillaeampar monstret (\w+)@(\w+\.\w+) pa 'user@example.com' fangar 'user' i grupp 1 och 'example.com' i grupp 2. Namngivna grupper med (?<namn>...) gor komplexa monster mer lasbara.

Vanliga regex-misstag

Att gloemma att escapea specialtecken ar det vanligaste felet. Tecken som . + * ? ( ) [ ] ^ $ | och klammerparenteser har speciell betydelse i regex och maste escapeas med ett omvant snedstreck nar du vill matcha dem bokstavligt. Till exempel kraver matchning av en punkt ett omvant snedstreck folgt av punkt istallet for bara en punkt.

Att skriva alltfor giriga monster ar ett annat vanligt problem. Kvantifieraren .* matchar sa mycket text som mojligt, vilket kan fanga mycket mer an avsett. Anvand den lata kvantifieraren .*? for att matcha sa lite som mojligt, eller anvand mer specifika monster som [^>]* istallet for .* nar du parsar strukturerad text.

Vanliga frågor

Vad är greedy jämfört med lazy matchning?

Greedy (standard): .* matchar så mycket som möjligt. I '<b>foo</b>' matchar <.*> hela strängen '<b>foo</b>'. Lazy: .*? matchar så lite som möjligt. <.*?> matchar bara '<b>'. Lägg till ? efter en kvantifierare för att göra den lazy: *?, +?, ??. Använd lazy matchning när du vill matcha den kortaste möjliga delmängden.

Vad är regex-backtracking och varför kan det vara långsamt?

Backtracking sker när regex-motorn testar en väg som misslyckas och sedan backar för att prova alternativ. Katastrofal backtracking sker med mönster som (a+)+ mot inmatning 'aaaaX' — motorn provar exponentiellt många kombinationer. Dessa kallas ReDoS-mönster (Regular expression Denial of Service). Undvik kapslade kvantifierare. Använd atomära grupper eller possessiva kvantifierare om tillgängliga. Testa med lång inmatning.