technical

Fra almindeligt sprog til regex

Regex glemmer man hele tiden. Beskriv → Ryna AI skriver, forklarer og giver testcases.

Try one of these:

No credit card5 free questions leftTR & EN destekli

Ryna AI Editorial Team · Updated September 1, 2026

Du kan se mønstret tydeligt for dig — 'fang telefonnumre i dette format', 'træk datoer ud af logliner', 'luk kun gyldige e-mails igennem' — men i det øjeblik du rammer regex-syntaksen, går du i stå. Én forkert placeret kvantor, og mønstret matcher intet eller alt; \d og \w flyder sammen; du skeler i backslash-helvede. Regex har også en alvorlig side: i 2019 tog et enkelt dårligt skrevet mønster Cloudflare offline globalt i omkring 30 minutter via catastrophic backtracking. Et mønster, der 'ser ud til at virke', kan låse en CPU i produktion.

Du beskriver for Ryna AI på almindeligt dansk (eller engelsk), hvad du vil matche, angiver dit sprog/din variant (JavaScript, Python re, PCRE/PHP, .NET, Java, Go RE2, grep/POSIX), og du får det færdige mønster, en forklaring token for token, teststrenge der skal matche og IKKE må matche, og noter om grænsetilfælde (unicode, tom streng, greedy vs lazy, ankre). Det virker også den anden vej: indsæt en kryptisk regex og spørg 'hvad gør det her?', eller giv dit mønster plus det input, det fejler på, og spørg 'hvorfor eksploderer det?'

Send aldrig regex i produktion i blinde: behandl Rynas mønster som et udkast, og test det mod både positive og negative eksempler fra dine egne rigtige data. Free-planen giver dig snesevis af beskeder om dagen — du kan prøve og finpudse rigeligt med mønstre hele dagen. At uploade en rigtig logfil, CSV eller et skærmbillede og sige 'lav et mønster, der fanger alle ordrenumre i disse data', eller at få en ReDoS-analyse med dyb tænkning af et komplekst mønster, kræver Plus (399,99 TL/md.).

Why use Ryna AI for this

Variantbevidst output: JavaScript, Python re, PCRE/PHP, .NET, Java, Go RE2, grep/POSIX — Ryna bruger den rigtige syntaks til lookbehind, navngivne grupper og unicode-adfærd.

Forklaring token for token: Ryna bryder ned, hvad hvert `\d`, `[^ ]`, `(?:...)`, `{2,4}` gør, så du forstår mønstret i stedet for at lære det udenad.

Automatisk testsæt: Ryna laver eksempelstrenge, der skal matche, OG som ikke må matche, så du fanger over-matching fra start.

Dækning af grænsetilfælde: Ryna gør opmærksom på tom streng, unicode-tegn, linjeskift, greedy vs lazy og forankret kontra ikke-forankret adfærd.

ReDoS-advarsel: Ryna markerer risici for catastrophic backtracking som indlejrede kvantorer (a+)+ og foreslår et sikrere alternativt mønster.

Virker begge veje: Ryna laver et mønster ud fra en beskrivelse og forklarer en kryptisk regex, du indsætter, i almindeligt sprog — eller fejlfinder en, der er i stykker.

Example prompts

Click any prompt to load it into the box above and run it right here. Each prompt is tuned for a different scenario — try them all to see how Ryna AI adapts.

How it works — step by step

  1. 1

    Beskriv, hvad der skal matches

    På chat.rynaai.com beskriver du i almindeligt sprog, hvad du vil matche: 'fang fakturanumre i dette format' eller 'luk kun e-mails igennem, der ender på .edu'. Jo mere konkret du er, jo mere præcist bliver mønstret.

  2. 2

    Angiv varianten og målet

    Hvilket sprog/hvilken motor: 'JavaScript', 'Python re', 'PCRE', 'Go RE2', 'grep' — for lookbehind, navngivne grupper og \d's unicode-adfærd varierer fra variant til variant. Sig også, hvad dit mål er: validering eller udtræk inde i en tekst?

  3. 3

    Giv positive og negative eksempler

    Tag 3-4 strenge med, der skal matche, OG 3-4, der ikke må: 'disse skal gå igennem: ... disse skal fejle: ...'. Negative eksempler er det stærkeste signal mod over-matching.

  4. 4

    Bed om forklaring og tests

    Sig 'forklar mønstret token for token, og giv en testtabel med eksempler, der matcher, og som ikke gør'. Så ser du, hvad der virker og hvorfor, før du kopierer, og en juniorudvikler lærer det samtidig.

Example: input → output

You ask

JavaScript. Validér et amerikansk telefonnummer: valgfrit +1, områdenummer med eller uden parenteser, mellemrum eller bindestreger tilladt. Giv eksempler, der skal matche, og eksempler, der ikke må matche.

Ryna AI returns

```js /^(?:\+1[ -]?)?\(?\d{3}\)?[ -]?\d{3}[ -]?\d{4}$/ ``` **Opdeling af delene** - `^ … $` — validerer hele strengen fra ende til anden - `(?:\+1[ -]?)?` — valgfri landekode +1 med skilletegn - `\(?\d{3}\)?` — 3-cifret områdenummer, parenteser valgfrie - `[ -]?` — valgfrit mellemrum eller bindestreg som skilletegn - `\d{3}[ -]?\d{4}` — de resterende 7 cifre **Testtabel** | Input | Resultat | |---|---| | +1 (415) 555-2671 | matcher | | 415-555-2671 | matcher | | 4155552671 | matcher | | 415-555-267 | intet match (for kort) | | (415) 55-2671 | intet match (forkert gruppering) | **Noter om grænsetilfælde:** Mønstret validerer kun *formatet*, ikke om nummeret er ægte eller aktivt. Fordi skilletegnene er løse, accepterer det også uafbalancerede parenteser som '415)-555-2671'; har du brug for stram formatering, så kræv matchende parenteser med en strengere gruppe. Det indeholder ingen indlejrede kvantorer, så der er ingen ReDoS-risiko, og det oversættes også rent i Go RE2.

Pro tips

  • Giv ikke kun eksempler, der skal matche, men også dem, der IKKE må matche — de negative er det, der bedst forhindrer, at mønstret rammer for bredt.
  • Angiv altid varianten: lookbehind findes i JS og PCRE, men ikke i Go RE2; \d matcher unicode-cifre i nogle varianter — sig [0-9], hvis du kun vil have ASCII.
  • Bed om 'navngivne grupper' for læsbarhedens skyld — med (?<year>\d{4}) henter du fangster efter navn i stedet for indeks, hvilket er langt lettere at vedligeholde i koden.
  • Spørg: 'er der ReDoS-risiko fra indlejrede kvantorer som (a+)+, og giv en sikker version' — det er ikke til forhandling for mønstre i produktion.
  • Hold validering af hele strengen adskilt fra søgning inde i den: brug ankrene ^...$ til validering, og drop dem ved søgning/udtræk — ellers afviser du gyldige data.
  • Bed om både en 'streng' og en 'tolerant' version af samme opgave — en til det præcise format og en til at fange den virkelige verdens rodede data.

Common mistakes to avoid

  • At bede om et mønster uden at angive varianten — et lookbehind-mønster, der virker i JS, kan slet ikke oversættes i Go RE2.
  • Kun at give positive eksempler — mønstret rammer mere end tiltænkt og giver i stilhed falske positiver på rigtige data.
  • At forveksle regex med e-mail-'gyldighed' — et mønster fanger tastefejl, men kan ikke verificere, at postkassen findes; leverbarhed kræver SMTP/verifikation.
  • At sende i produktion uden at teste på rigtige data — 'den kan oversættes' er ikke det samme som 'den matcher rigtigt'.
  • Blindt at kopiere et mønster med indlejrede kvantorer — konstruktioner som (.*)* er ReDoS-udsatte og låser CPU'en ved store input.

Who this is for

Udviklere, dataanalytikere, DevOps, alle der parser logfiler.

FAQ

Hvilke sprog og regex-varianter understøttes?

JavaScript, Python re, PCRE/PHP, .NET, Java, Go RE2, Ruby og grep/POSIX. Angiv din variant fra start: RE2 understøtter hverken lookaround eller tilbagereferencer, og Ryna advarer dig og tilbyder et alternativ.

Validerer regex e-mailadresser perfekt?

Nej. Et fuldt RFC 5322-mønster er enormt og upraktisk; regex fanger tastefejl (manglende @, dobbelte punktummer), men kan ikke bekræfte, at postkassen findes. Reel leverbarhed kræver en verifikations-/SMTP-tjeneste — Ryna giver dig et mønster, der er 'godt nok' til formålet.

Advarer den om katastrofal backtracking / ReDoS?

Ja, bare spørg. Den markerer risici ved indlejrede kvantorer og foreslår et sikkert alternativ uden backtracking i RE2-stil. Ved komplekse mønstre laver Deep Thinking i Plus en mere detaljeret analyse.

Forklarer den en kryptisk regex, jeg allerede har?

Ja, det virker også den anden vej. Indsæt mønstret, så forklarer Ryna det del for del på almindeligt dansk, giver eksempler på, hvad det matcher, og peger på skjulte fejl (forkert anker, manglende escape).

Kan jeg uploade en log eller en CSV, så mønstret udledes af data?

Ja, men upload af filer, PDF'er og skærmbilleder er en Plus-funktion (399,99 TL/md.). På Free-planen indsætter du eksempellinjer som tekst; du har snesevis af beskeder om dagen, så du kan gentage og finpudse, så meget du vil.

Related use cases

Free — dozens of daily messages

No credit card. Plus at 399.99 TRY/mo unlocks image analysis, file analysis (PDF/Word/Excel), deep thinking, web research, and assistants.