Text

URL:er

Vad är URL-extraktorn?

Du har en mejltråd på 200 rader, en Slack-kanalsexport, en loggfil, ett supporttranskript eller några markdown-anteckningar — och du vill ha varje URL den nämner, i ordning, utan dubbletter, redo att klistras in nån annanstans. Kanske loggar du vilka länkar en kund har klickat på. Kanske går du igenom ett dokument efter utgående länkar inför publicering. Kanske ska URL:erna in i en crawler. Vad det än är, du vill inte scrolla och kopiera-klistra in 40 gånger. Släpp texten i vänsterpanelen så ger högerpanelen dig en JSON-array över alla URL:er den hittade.

Extraktionen vilar på ett enkelt regex som matchar http:// och https:// följt av godtyckliga icke-blanksteckens­tecken. Varje träff trimmas sedan från avslutande skiljetecken som nästan aldrig ingår i en URL (punkt, komma, semikolon, slutparentes eller hakparentes — sånt som hänger med när en mening slutar med en länk) och valideras via URL-konstruktorn. Accepterar konstruktorn den är den äkta; kastar den fel hoppas den över. Dubbletter tas bort medan ordningen i dokumentet bevaras — första förekomsten vinner. Tillvägagångssättet matchar det som WHATWG URL Standard kallar "URL parsing" och ligger i linje med hur JavaScript-regex brukar hantera URL-detektering.

Utdata är en JSON-array med strängar, i den ordning URL:erna dök upp. Fanns det inga URL:er i texten får du [] — tom array, inget fel, ingen toast. Allt körs i din webbläsare. Inget laddas upp, inget loggas. RFC 3986 är spec:en bakom vad som räknas som en giltig URL, och URL-konstruktorn implementerar den.

Så använder du extraktorn

Tre steg. Vart och ett motsvarar en knapp på sidan.

1

Klistra in texten eller ladda exemplet

Släpp din text i vänsterpanelen — ett mejl, en loggfil, ett transkript, en artikel, vad som helst. Klicka Exempel för att ladda ett realistiskt fall: en intern teamnotis med fyra URL:er utspridda. Exempelinmatning:

Hej team — kolla beställningen på https://api.shop.example.com/v1/orders/ORD-1001
och ta också en titt på dashboarden https://admin.shop.example.com/dashboard?tab=orders.
Kunden (Ava Chen) hörde av sig via http://support.shop.example.com/tickets/T-4521 — se även vår dokumentation på https://docs.shop.example.com/api/orders.

Extraktorn fångar bara <code>http://</code>- och <code>https://</code>-URL:er. Bara domännamn som <code>shop.example.com</code> utan schema hoppas över (de är tvetydiga — det kan vara ett hostnamn, ett filnamn eller bara text).

2

Läs URL-arrayen

Högerpanelen visar en JSON-array med URL:er i dokumentordning, dubbletter borttagna. Avslutande skiljetecken som hängde med från meningen runtomkring trimmas bort. Varje URL valideras via URL-konstruktorn — allt som är trasigt hoppas över utan ljud och bild, så arrayen innehåller bara äkta, parsbara URL:er.

3

Kopiera eller ladda ner

Klicka Kopiera för att skicka JSON:en till urklipp, eller Ladda ner för att spara den som en .json-fil. Minifiera packar arrayen på en rad om du behöver det till en loggrad. Använd Rensa på indatasidan för att börja om från ett blankt textblock.

När du faktiskt skulle använda det här

Granska supportärenden

En kund klistrar in en lång mejltråd i ett ärende. Agenten (Marco Rivera) behöver veta varje URL kunden hänvisar till. Släpp mejlinnehållet här, hämta arrayen, klicka igenom dem en och en. Slipper trötta ögon från scrollandet och risken att missa någon.

Crawla en Slack- eller Discord-export

Du har exporterat en kanal och vill mata in alla länkade resurser i din linkchecker eller arkiveringsbot. Exporten är JSON eller HTML, men URL:erna ligger blandade med text, emojier och metadata. Klistra in alltihop här så har du en ren URL-lista redo för en fetch() i en loop.

Länkgranskning före publicering av blogg och dokumentation

Priya Patel ska just publicera en text på 4 000 ord och vill verifiera att varje utgående länk fortfarande funkar. Klistra in markdown-källan, hämta URL-arrayen, kör dem genom en checker. Googles riktlinjer för crawl-bara länkar utgår från att dina länkar fungerar — trasiga länkar straffar din ranking.

Plocka ut URL:er ur strukturerade loggar

I applikationsloggar gömmer det sig ofta URL:er i felmeddelanden, request-traces eller referrer-fält. Om du utreder en incident och vill se alla URL:er som passerade under ett 5-minutersfönster så klistrar du in loggslicen och deduplicerar. Ofta är just den deduplicerade listan snabbaste vägen att hitta den där konstiga URL:en som drog igång kedjereaktionen.

Vanliga frågor

Fångar den ftp:// eller mailto: eller andra scheman?

Nej — bara http:// och https://. Webblänkar är vad folk vanligtvis menar med "extrahera URL:er", och regex:en är medvetet snäv för att undvika falska träffar. Behöver du andra scheman har WHATWG URL Standard stöd för dem, men matchningen blir luddigare (mailto:-adresser ser ut som text, ftp: är ovanligt idag). Skicka in en feature-request om du faktiskt har det användningsfallet.

Hur hanteras markdown-länkar som [text](https://example.com)?

Snyggt. Regex:en hittar https://example.com inuti parentesen och trimningen av avslutande skiljetecken plockar bort slutparentesen. Du får alltså den nakna URL:en ur markdown, BBCode, HTML <a href> och de flesta andra omgivande syntaxer utan formatsspecifik parsning.

Behålls dubbletter i ordning eller tas de bort?

Tas bort, med ordningen för första förekomsten bevarad. Nämner texten https://shop.example.com tre gånger dyker den upp en gång i utdata, vid den första förekomstens position. Dedupliceringen är ett enkelt Set-filter — se MDN om Set.

Och URL:er med konstiga tecken — pipes, hakparenteser, parenteser?

Pipes (|) och hakparenteser är giltiga i URL:er men ovanliga i riktiga URL:er, så regex:en plockar dem så länge de inte föregås av blanksteg. Slutande hak- och slutparenteser allra sist i en träff trimmas bort eftersom de mycket oftare är meningsskiljetecken än del av URL:en. Har du en riktig URL som slutar på ) kommer URL-konstruktorn fortfarande att acceptera den — men du måste lägga ett mellanslag efter den i texten för att slutparentesen ska hänga kvar.

Finns det en storleksgräns?

Ja — 1 MB. Det motsvarar några tusen sidor text, vilket är mer än nog för vilken mejltråd, transkript eller loggslice du realistiskt skulle klistra in. Har du en fil på flera megabyte, dela upp den i bitar eller kör först grep/ripgrep på kommandoraden.

Funkar det offline?

Ja. Allt körs i din webbläsare — regex-matchningen, URL-valideringen, dedupliceringen. Den enda nätverkstrafiken är den första laddningen av sidan. Är sidan väl uppe kan du koppla bort dig och verktyget rullar på. URL-konstruktorn är inbyggd i varje modern webbläsare enligt URL API.

Andra URL- och textverktyg

Att extrahera är en operation. Här är vad som naturligt går hand i hand med det: