/ / URL correspondantes trouvées dans les tweets - ruby, regex

URL correspondantes trouvées dans les Tweets - ruby, regex

Je participe à un projet qui nécessite la suppression d'URL

Existe-t-il une bonne expression régulière pour faire correspondre n'importe quelle URL dans Ruby 1.8.7?

PS - J'en ai un

/(?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

Le regex est à http://www.rubular.com/r/UFDveGLNGt avec quelques exemples de chaînes Comment faire correspondre des sites Web tels que fb.me ou goo.gl ou google.com?

Réponses:

0 pour la réponse № 1

Qu'en est-il de:

require "uri"
URI.regexp

Cela équivaut à:

/
([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

Ce sera probablement mieux que tout ce que nous pouvons venir ici (sinon, envisagez de le soumettre à ruby).