2010-02-13 7 views
0

J'utilise des URL correspondantes dans une partie de mon code. Maintenant, j'utilise des expressions régulières pour cela. C'est bien, mais ne produit pas toujours de "beaux" motifs simplement lisibles. Y a-t-il une langue définie pour les URL correspondantes? Il devrait être comme ceci: http://*.example.com/* si simplement les jokers et les choses utiles pour l'URL seraient là.Correspondance de motifs dans une URL avec un langage similaire à regexp, mais spécifique aux URL

Le meilleur serait si ces expressions pouvaient être simplement transformées en expression rationnelle. Connaissez-vous la spécification pour une telle langue, ou même une mise en œuvre, de préférence pour ruby ​​.. sinon je l'implémente moi-même ... la clé est la lisibilité des motifs. Merci pour l'aide!

Répondre

0

Vous devriez soigneusement travailler votre syntaxe avant de commencer. À première vue, ce que vous avez l'intention serait facile à réaliser en traduisant votre syntaxe dans les expressions rationnelles ordinaires:

s = 'http://*.example.com/*' #=> "http://*.example.com/*" 
r = Regexp.compile("^#{Regexp.escape(s).gsub('\*','.*')}$") #=> http:examplecom 
'http://test.example.com/path/to/doc.html' =~ r #=> 0 
'http://test.example2.com/path/to/doc.html' =~ r #=> nil 
0

URL peuvent être un peu difficile à analyser correctement, surtout si vous voulez être conforme aux standards. C'est pourquoi Ruby a la bibliothèque intégrée uri.

Pour une bibliothèque d'analyse plus avancée avec des espaces réservés comme vous le souhaitez, vous devriez regarder dans le addressable gem.