Metin

URL’ler

URL Çıkarıcı nedir?

200 satırlık bir e-posta zinciriniz, bir Slack kanalı export’unuz, bir log dosyanız, bir müşteri destek transkriptiniz ya da Markdown notlarınız var — ve içinde geçen tüm URL’leri sıralı, tekrarsız ve başka bir yere yapıştırmaya hazır şekilde istiyorsunuz. Belki bir müşterinin hangi linklere tıkladığını denetliyorsunuz. Belki yayımlamadan önce bir dokümandaki dış bağlantıları tarıyorsunuz. Belki URL’leri bir crawler’a vereceksiniz. Sebep ne olursa olsun, 40 kez aşağı kaydırıp kopyala-yapıştır yapmak istemezsiniz. Metni sol panele bırakın, sağ panel size bulduğu tüm URL’lerin JSON dizisini versin.

Çıkarma işi, http:// ve https://’i takip eden boşluk olmayan karakterleri eşleyen sade bir regex’e dayanıyor. Her eşleşme, neredeyse hiçbir zaman URL’nin parçası olmayan sondaki noktalama işaretlerinden (nokta, virgül, noktalı virgül, kapanan parantez veya köşeli parantez — bir cümle linkle bittiğinde sona düşen şeyler) temizlenir ve URL constructor’dan geçirilerek doğrulanır. Constructor kabul ederse gerçek bir URL’dir; hata fırlatırsa atlanır. Tekrarlar, doküman sırası korunarak temizlenir — ilk geçen kazanır. Bu yaklaşım WHATWG URL Standard’ın "URL parsing" dediği şeyle örtüşür ve JavaScript regex’in URL tespitinde genellikle kullandığı yöntemle aynı çizgidedir.

Çıktı, URL’lerin geçtiği sırada bir string JSON dizisidir. Metinde URL yoksa [] alırsınız — boş dizi, hata yok, toast yok. Her şey tarayıcınızda çalışır. Hiçbir şey yüklenmez, hiçbir şey loglanmaz. Geçerli URL’nin ne olduğunu tanımlayan temel spec RFC 3986’dır ve URL constructor onu uygular.

Çıkarıcı nasıl kullanılır

Üç adım. Her biri bu sayfadaki bir butona karşılık geliyor.

1

Metni yapıştırın ya da örneği yükleyin

Metninizi sol panele bırakın — bir e-posta gövdesi, log dosyası, transkript, makale, ne olursa. Gerçekçi bir örnek için Örnek’e tıklayın: dört URL’nin serpiştirildiği bir iç ekip notu yüklenir. Örnek girdi:

Selam ekip — siparişi https://api.shop.example.com/v1/orders/ORD-1001 üzerinden bir gözden geçirin
ve panele de bir bakın https://admin.shop.example.com/dashboard?tab=orders.
Müşteri (Ava Chen) http://support.shop.example.com/tickets/T-4521 üzerinden ulaştı — dokümanlara da bakın: https://docs.shop.example.com/api/orders.

Çıkarıcı yalnızca <code>http://</code> ve <code>https://</code> URL’lerini yakalar. Şemasız çıplak alan adları (<code>shop.example.com</code> gibi) atlanır (belirsizdir — ana bilgisayar adı, dosya adı ya da düz metin olabilir).

2

URL dizisini okuyun

Sağ panelde, doküman sırasına göre ve tekrarları temizlenmiş URL’lerin JSON dizisi görünür. Çevresindeki cümleden gelen sondaki noktalama işaretleri kırpılır. Her URL, URL constructor ile doğrulanır — bozuk olan her şey sessizce atlanır, böylece dizide yalnızca gerçek, parse edilebilir URL’ler kalır.

3

Kopyalayın ya da indirin

Kopyala’ya basıp JSON’u panonuza gönderin ya da İndir ile .json dosyası olarak kaydedin. Bir log satırına sığdırmanız gerekiyorsa Küçült diziyi tek satıra sıkıştırır. Girdiyi sıfırlayıp baştan başlamak için girdi tarafındaki Temizle’yi kullanın.

Bunu gerçekten ne zaman kullanırsınız

Müşteri destek biletlerini denetleme

Bir müşteri uzun bir e-posta zincirini bir bilete yapıştırıyor. Temsilcinin (Marco Rivera) müşterinin bahsettiği tüm URL’leri bilmesi gerekiyor. E-posta gövdesini buraya bırak, diziyi al, hepsine tek tek tıkla. Aşağı kaydırıp gözünü yormak yok, birini kaçırma riski yok.

Slack veya Discord export’unu tarama

Bir kanalı export aldınız ve linklenen tüm kaynakları link denetleyicinize ya da arşiv botunuza vermek istiyorsunuz. Export JSON ya da HTML, ama URL’ler metin, emoji ve metadata arasına karışmış. Hepsini buraya yapıştırın; döngü içinde fetch() için temiz bir URL listeniz olur.

Blog yazıları ve dokümanları yayımdan önce link denetleme

Priya Patel 4.000 kelimelik bir yazıyı yayımlamak üzere ve dış bağlantılarının hepsinin hâlâ çalıştığını doğrulamak istiyor. Markdown kaynağını yapıştırın, URL dizisini alın, bir denetleyiciden geçirin. Google’ın taranabilir bağlantı kılavuzu linklerinizin çalıştığını varsayar — kırık linkler sıralamaya zarar verir.

Yapılandırılmış loglardan URL çekme

Uygulama logları sıkça URL’leri hata mesajlarına, istek izlerine ya da referrer alanlarına gömer. Bir olayı araştırırken 5 dakikalık bir pencereden geçen tüm URL’leri görmek istiyorsanız log dilimini yapıştırıp dedup’layın. Çoğu zaman o tek tekrarsız liste, çığı başlatan o tuhaf URL’yi bulmanın en hızlı yoludur.

Sık Sorulan Sorular

ftp:// veya mailto: gibi başka şemaları da yakalar mı?

Hayır — sadece http:// ve https://. İnsanlar "URL çıkar" derken genelde web linklerini kasteder ve regex, yanlış pozitiflerden kaçınmak için bilinçli olarak dar tutuldu. Başka şemalara ihtiyacınız varsa WHATWG URL Standard onları destekler ama eşleştirme bulanıklaşır (mailto: adresleri metne benzer, ftp: artık nadiren kullanılır). Gerçek bir kullanım senaryonuz varsa bir özellik isteği açın.

[metin](https://example.com) gibi Markdown linkleri nasıl ele alınıyor?

Temiz bir biçimde. Regex parantez içindeki https://example.com’u bulur ve sondaki noktalama kırpması kapanan parantezi söker. Böylece Markdown, BBCode, HTML <a href> ve diğer çoğu çevre sözdiziminden URL’yi formata özgü ayrıştırma gerekmeden çıplak halde alırsınız.

Tekrarlar sırayla mı tutuluyor, yoksa silinip tek mi bırakılıyor?

Tek bırakılıyor; ilk geçişin sırası korunuyor. Metninizde https://shop.example.com üç kez geçiyorsa çıktıda bir kez, ilk geçtiği konumda görünür. Dedup, basit bir Set filtresidir — bkz. MDN’de Set.

Pipe, köşeli parantez, parantez gibi acayip karakterler içeren URL’ler ne oluyor?

Pipe (|) ve köşeli parantezler URL içinde geçerlidir ama gerçek URL’lerde nadirdir; başlarında boşluk yoksa regex onları yakalar. Bir eşleşmenin tam sonundaki kapanan köşeli parantez ve parantezler kırpılır çünkü URL’nin parçası olmaktan çok cümle noktalaması olma ihtimalleri yüksektir. ) ile biten gerçek bir URL’niz varsa URL constructor onu yine de kabul eder — ama metinde kapanan parantezin URL’ye yapışık kalması için sonuna bir boşluk eklemeniz gerekir.

Bir boyut sınırı var mı?

Evet — 1 MB. Bu birkaç bin sayfalık metin demek; gerçek hayatta yapıştıracağınız herhangi bir e-posta zinciri, transkript ya da log dilimi için fazlasıyla yeter. Birkaç megabaytlık dosyanız varsa parçalara bölün ya da önce komut satırından grep/ripgrep ile süzün.

Çevrimdışı çalışıyor mu?

Evet. Her şey tarayıcınızda çalışıyor — regex eşlemesi, URL doğrulama, dedup. Tek ağ trafiği, sayfanın ilk yüklenmesi. Sayfa açıldıktan sonra bağlantınızı kesseniz de araç çalışmaya devam eder. URL constructor, URL API uyarınca her modern tarayıcıda yerleşik gelir.

Diğer URL ve metin araçları

Çıkarmak tek bir işlem. Doğal olarak yan yana kullanılanlar şunlar: