2011-01-17 27 views
15

Olası çoğaltmaları maç için:
Regex to match URL
regex to remove the webpage part of a url in rubyYakut Normal ifade bir URL

Bir dosyadaki tüm URL'ler ayrıştırmak için normal ifadede arayışı içindeyim.
Düzenledikten sonra aldığım normal ifadenin çoğunu denedim, ancak bir veya diğer durumda başarısız oluyor. Benim fikrim, begening'de http veya https varsayımını kontrol eden bir yazı yazmak ve boş bir alan görene kadar her şeyle eşleşecektir.
herhangi bir fikir?
Not: url ayrıştırmak değil, tüm URL'leri bir dosyadan silmeye veya atleast okunamaz hale getirmeye gerek yok.

+0

P.S. .: Burada Rayları görüyorsunuz? Bu etiketi sildim. Ruby ve Rails arasındaki farkı biliyor musunuz? – Nakilon

cevap

18

Bu deneyebilirsiniz:

/https?:\/\/[\S]+/ 

\S herhangi boşluk olmayan karakter demektir.

(Rubular)

+2

Bu gerçekten bir uri regex mi? Bu sadece http (lar) ile başlayan herhangi bir dizgi arıyor ... ki bu bir uri değil. – Mohamad

51

standart URI kütüphane url dizesi için düzenli ifadedir URI.regexp sağlar.

require 'uri' 
string.scan(URI.regexp) 

http://ruby-doc.org/stdlib/libdoc/uri/rdoc/index.html

+8

NB'de, tüm url'leri bir dizgeden temel olarak ayrıştıran bir URI.extract yöntemi de vardır. Çok kullanışlı. – rogerdpack

+0

undefined local variable veya main için method 'dize ': Object (NameError) Bunu mu demek istediniz? Dize –

+0

URI.regexp, http: // x', hatta sadece http: 'gibi gerçekten geçerli olmayan URL'lerle eşleşiyor gibi görünüyor. –