Træk URL'er ud af tekst
Hiv alle http/https-URL'er ud af en hvilken som helst tekstklump til et JSON-array uden dubletter
Tekst
URL'er
Hvad er URL-extractoren?
Du har en mailtråd på 200 linjer, en eksport fra en Slack-kanal, en logfil, et supporttransskript eller nogle markdown-noter — og du vil have alle URL'er, den nævner, i rækkefølge, uden dubletter, klar til at sætte ind et andet sted. Måske auditerer du, hvilke links en kunde har klikket på. Måske skanner du et dokument for udgående henvisninger, før du publicerer. Måske skal URL'erne ind i en crawler. Lige meget hvad, så gider du ikke scrolle og copy-paste 40 gange. Smid teksten i venstre panel, og højre panel giver dig et JSON-array over alle de URL'er, den fandt.
Udtrækket bygger på et simpelt regex, der matcher http:// og https:// efterfulgt af alle ikke-blanke tegn. Hvert match bliver derefter trimmet for sluttegnsætning, der næsten aldrig er en del af en URL (punktum, komma, semikolon, slutparentes eller kantet parentes — den slags, der kommer med, når en sætning ender på et link), og valideret gennem URL-constructor. Hvis constructoren accepterer den, er den ægte; hvis den smider en fejl, springes den over. Dubletter fjernes, mens rækkefølgen i dokumentet bevares — første forekomst vinder. Tilgangen passer med det, WHATWG URL Standard kalder "URL parsing", og ligger i tråd med, hvordan JavaScript-regex normalt håndterer URL-detektion.
Outputtet er et JSON-array af strenge i den rækkefølge, URL'erne dukkede op. Var der ingen URL'er i teksten, får du [] — tomt array, ingen fejl, ingen toast. Det hele kører i din browser. Intet uploades, intet logges. RFC 3986 er den underliggende spec for, hvad der tæller som en gyldig URL, og URL-constructoren implementerer den.
Sådan bruger du extractoren
Tre trin. Hvert af dem svarer til en knap på siden.
Indsæt teksten eller hent eksemplet
Smid din tekst i venstre panel — en mail-body, en logfil, et transskript, en artikel, lige meget hvad. Klik på Eksempel for at hente et realistisk tilfælde: en intern teamnote med fire URL'er spredt ud. Eksempel-input:
Hej team — kig lige på ordren på https://api.shop.example.com/v1/orders/ORD-1001
og tjek også dashboardet https://admin.shop.example.com/dashboard?tab=orders.
Kunden (Ava Chen) skrev via http://support.shop.example.com/tickets/T-4521 — se også vores docs på https://docs.shop.example.com/api/orders.Extractoren fanger kun <code>http://</code>- og <code>https://</code>-URL'er. Bare domæner som <code>shop.example.com</code> uden skema springes over (de er flertydige — det kan være et hostnavn, et filnavn eller bare tekst).
Læs URL-arrayet
Højre panel viser et JSON-array af URL'er i dokumentrækkefølge med dubletter fjernet. Sluttegnsætning, der kom fra den omkringliggende sætning, bliver skåret væk. Hver URL valideres via URL-constructoren — alt, der er forkert formet, springes stille og roligt over, så arrayet kun indeholder ægte, parsbare URL'er.
Kopiér eller download
Klik på Kopiér for at sende JSON'en til udklipsholder, eller på Download for at gemme den som en .json-fil. Minificér mader arrayet sammen til én linje, hvis du har brug for det til en logentry. Brug Ryd i input for at starte forfra med en blank klump.
Hvornår du faktisk bruger det her
Audit af supportsager
En kunde sætter en lang mailtråd ind i en sag. Agenten (Marco Rivera) skal vide, hvilke URL'er kunden henviser til. Smid mail-bodyen herind, hent arrayet, klik dem igennem én ad gangen. Sparer øjnene for scroll og dig for risikoen ved at overse en.
Crawle en Slack- eller Discord-eksport
Du har eksporteret en kanal og vil køre alle linkede ressourcer gennem din linkchecker eller arkivbot. Eksporten er JSON eller HTML, men URL'erne er blandet op med tekst, emoji og metadata. Indsæt det hele her, og du har en ren URL-liste klar til en fetch() i en løkke.
Linkaudit før du publicerer blogindlæg og docs
Priya Patel skal til at publicere et indlæg på 4.000 ord og vil verificere, at hvert eneste udgående link stadig virker. Indsæt markdown-kilden, hent URL-arrayet, kør dem gennem en checker. Googles vejledning om crawl-bare links går ud fra, at dine links virker — døde links koster på rankingen.
Trække URL'er ud af strukturerede logs
Applikationslogs gemmer ofte URL'er i fejlmeddelelser, request-traces eller referrer-felter. Hvis du undersøger en hændelse og skal se alle URL'er, der løb gennem et 5-minutters vindue, så indsæt logsnittet og deduplér. Tit er den deduplikerede liste den hurtigste vej til at finde den ene mærkelige URL, der startede kaskaden.
Ofte stillede spørgsmål
Fanger den ftp:// eller mailto: eller andre skemaer?
Nej — kun http:// og https://. Web-links er det, folk normalt mener med "træk URL'er ud", og regex'et er bevidst stramt for at undgå falske positiver. Hvis du har brug for andre skemaer, understøtter WHATWG URL Standard dem, men matchingen bliver mere uskarp (mailto:-adresser kan ligne tekst, ftp: er sjældent i dag). Send et feature-request, hvis du faktisk har det use case.
Hvordan håndterer den markdown-links som [tekst](https://example.com)?
Pænt. Regex'et finder https://example.com inde i parentesen, og trimningen af sluttegnsætning skærer slutparentesen af. Så du får den nøgne URL ud af markdown, BBCode, HTML <a href> og de fleste andre omkringliggende syntakser uden at skulle have format-specifik parsing.
Bliver dubletter holdt i rækkefølge eller fjernet?
Fjernet, med rækkefølgen for første forekomst bevaret. Nævner din tekst https://shop.example.com tre gange, optræder den én gang i outputtet, på den første forekomsts plads. Deduplikering er et simpelt Set-filter — se MDN om Set.
Hvad med URL'er med mærkelige tegn — pipes, kantede parenteser, parenteser?
Pipes (|) og kantede parenteser er gyldige i URL'er, men sjældne i de rigtige af slagsen, så regex'et fanger dem, så længe der ikke står et blanktegn foran. Lukkede kantede parenteser og slutparenteser helt til sidst i et match trimmes væk, fordi de meget oftere er sætningstegnsætning end en del af URL'en. Har du en ægte URL, der ender på ), accepterer URL-constructoren den stadig — men i teksten skal du sætte et mellemrum efter, så slutparentesen bliver hængende på.
Er der en størrelsesgrænse?
Ja — 1 MB. Det er flere tusind siders tekst, hvilket er mere end nok til en hvilken som helst mailtråd, transskript eller logsnit, du realistisk ville sætte ind. Har du en fil på flere megabytes, så del den op eller kør den først gennem grep/ripgrep på kommandolinjen.
Virker det offline?
Ja. Alt kører i din browser — regex-matchet, URL-valideringen, deduplikeringen. Den eneste netværkstrafik er den første sideindlæsning. Når siden først er åben, kan du afbryde forbindelsen, og værktøjet kører videre. URL-constructoren er indbygget i alle moderne browsere ifølge URL API.
Andre URL- og tekstværktøjer
At trække URL'er ud er én operation. Her er, hvad der naturligt parrer sig med det: