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 № 1Qu'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
).