2011-01-17 14 views
15

mögliche Dubletten zum Spiel:
Regex to match URL
regex to remove the webpage part of a url in rubyRuby-Regulärer Ausdruck einer URL

ich auf der Suche nach einem regulären Ausdruck bin in einer Datei, die alle URLs parsen.
Ich habe viele der regulären Ausdrücke ausprobiert, die ich nach dem googlen bekommen habe, aber es schlägt in dem einen oder anderen Fall fehl. Meine Idee ist es, eine zu schreiben, die die Anwesenheit von http oder https am Anfang überprüft und es wird alles zusammenpassen, bis es einen leeren Raum sieht.
irgendwelche Ideen?
HINWEIS: Ich muss nicht die URL analysieren, sondern alle URLs aus einer Datei löschen oder zumindest unlesbar machen.

+0

P. S .: Wo sehen Sie Rails hier? Ich lösche dieses Tag. Kennst du den Unterschied zwischen Ruby und Rails? – Nakilon

Antwort

18

Sie können dies versuchen:

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

Die \S jede Nicht-Leerzeichen.

(Rubular)

+2

Ist das wirklich eine URI Regex? Das ist nur auf der Suche nach einer Zeichenfolge, die mit http (s) beginnt ... das ist kein URI. – Mohamad

51

Die Standard-URI-Bibliothek stellt URI.regexp, die der reguläre Ausdruck für URL-Zeichenfolge ist.

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

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

+8

NB es gibt auch eine URI.extract-Methode, die im Grunde alle URLs aus einer Zeichenfolge analysiert. Sehr hilfreich. – rogerdpack

+0

undefined lokale Variable oder Methode 'string 'für main: Objekt (NameError) Meinten Sie? String –

+0

URI.regexp scheint Zeichenfolgen zu entsprechen, die nicht wirklich gültige URLs wie "http: // x" oder auch nur "http:" sind. –

Verwandte Themen