Domanda

Quello che sto cercando di fare qui è diciamo abbiamo due URL di esempio:

url1 = "http://emy.dod.com/kaskaa/dkaiad/amaa//////////"
url2 = "http://www.example.com/"

Come posso estrarre gli URL righe verso il basso?

url1 = "http://emy.dod.com/kaskaa/dkaiad/amaa"
url2 = "http://http://www.example.com"

URI.parse in Ruby igienizza certo tipo di URL non valido, ma non è efficace in questo caso.

Se usiamo regex /^(.*)\/$/ quindi rimuove un singolo / barra da url1 ed è inefficace per url2.

C'è qualcuno a conoscenza di come gestire questo tipo di URL parsing?

Il punto qui è che non voglio che il mio sistema per avere http://www.example.com/ e http://www.example.com essere trattati come due URL diversi. E lo stesso vale per http://emy.dod.com/kaskaa/dkaiad/amaa//// e http://emy.dod.com/kaskaa/dkaiad/amaa/.

È stato utile?

Soluzione

Se avete solo bisogno di rimuovere tutte le barre a partire dalla fine della stringa URL allora si può provare la seguente espressione regolare:

"http://emy.dod.com/kaskaa/dkaiad/amaa//////////".sub(/(\/)+$/,'')
"http://www.example.com/".sub(/(\/)+$/,'')

/(\/)+$/ - questo regex trova uno o più barre alla fine della stringa. Allora sostituiamo questa partita con la stringa vuota.

Spero che questo aiuti.

Altri suggerimenti

Anche se questa discussione è un po 'vecchio e la risposta in alto è abbastanza buona, ma vi suggerisco un altro modo per fare questo:

/^(.*?)\/$/

Si potrebbe vederlo in azione qui: https://regex101.com/r/vC6yX1/2

La magia qui è *?, che fa un incontro pigro. Così l'intera espressione potrebbe essere tradotto come:

Partita come alcuni personaggi come può e catturarlo, mentre incontro il maggior numero di barre come può alla fine.

Il che significa, in un inglese più semplice, rimuove tutte le barre di trascinamento.

def without_trailing_slash path
  path[ %r(.*[^/]) ]
end

path = "http://emy.dod.com/kaskaa/dkaiad/amaa//////////"

puts without_trailing_slash path # "http://emy.dod.com/kaskaa/dkaiad/amaa"
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top