/ / Съвпадащи URL адреси, намерени в туитове - ruby, regex

Съответстващи URL адреси, намерени в Tweets - рубин, regex

Участвам в правенето на проект, който изисква премахване на URL адреси

Има ли добър регекс за съвпадение на всеки URL адрес в Ruby 1.8.7?

ПС - имам такъв

/(?i)b((?:[a-z][w-]+:(?:/{1,3}|[a-z0-9%])|wwwd{0,3}[.]|[a-z0-9.-]+[.][a-z]{2,4}/)(?:[^s()<>]+|(([^s()<>]+|(([^s()<>]+)))*))+(?:(([^s()<>]+|(([^s()<>]+)))*)|[^s`!()[]{};:"".,<>?«»“”‘’])/* )/x

Регексът е на http://www.rubular.com/r/UFDveGLNGt с няколко примерни низове Как мога да съвпадна с уебсайтове като fb.me или goo.gl или google.com?

Отговори:

0 за отговор № 1

Какво относно:

require "uri"
URI.regexp

Това се оценява на:

/
([a-zA-Z][-+.a-zA-Zd]*):                           (?# 1: scheme)
(?:
((?:[-_.!~*"()a-zA-Zd;?:@&=+$,]|%[a-fA-Fd]{2})(?:[-_.!~*"()a-zA-Zd;/?:@&=+$,[]]|%[a-fA-Fd]{2})*)                    (?# 2: opaque)
|
(?:(?:
//(?:
(?:(?:((?:[-_.!~*"()a-zA-Zd;:&=+$,]|%[a-fA-Fd]{2})*)@)?        (?# 3: userinfo)
(?:((?:(?:[a-zA-Z0-9-.]|%hh)+|d{1,3}.d{1,3}.d{1,3}.d{1,3}|[(?:(?:[a-fA-Fd]{1,4}:)*(?:[a-fA-Fd]{1,4}|d{1,3}.d{1,3}.d{1,3}.d{1,3})|(?:(?:[a-fA-Fd]{1,4}:)*[a-fA-Fd]{1,4})?::(?:(?:[a-fA-Fd]{1,4}:)*(?:[a-fA-Fd]{1,4}|d{1,3}.d{1,3}.d{1,3}.d{1,3}))?)]))(?::(d*))?))? (?# 4: host, 5: port)
|
((?:[-_.!~*"()a-zA-Zd$,;:@&=+]|%[a-fA-Fd]{2})+)                 (?# 6: registry)
)
|
(?!//))                           (?# XXX: "//" is the mark for hostport)
(/(?:[-_.!~*"()a-zA-Zd:@&=+$,]|%[a-fA-Fd]{2})*(?:;(?:[-_.!~*"()a-zA-Zd:@&=+$,]|%[a-fA-Fd]{2})*)*(?:/(?:[-_.!~*"()a-zA-Zd:@&=+$,]|%[a-fA-Fd]{2})*(?:;(?:[-_.!~*"()a-zA-Zd:@&=+$,]|%[a-fA-Fd]{2})*)*)*)?                    (?# 7: path)
)(?:?((?:[-_.!~*"()a-zA-Zd;/?:@&=+$,[]]|%[a-fA-Fd]{2})*))?                 (?# 8: query)
)
(?:#((?:[-_.!~*"()a-zA-Zd;/?:@&=+$,[]]|%[a-fA-Fd]{2})*))?                  (?# 9: fragment)
/x

Това вероятно ще е по-добре от всичко, което можем да измислим тук (в противен случай обмислете да го изпратите ruby).