2010-06-04 7 views
0

J'ai une chaîne qui contient peut-être du texte avec des liens. J'utilise ces instructions pour l'élaborer:URLs complexes avec regex

message = message.gsub(/http[s]?:\/\/[^\s]+/) do |m|  
     replace_url(m) 
    end 

si la chaîne est "http://www.youtube.com/watch?v=6zToqLlM8ms&playnext_from=TL&videos=qpCvM5Ocr3M&feature=sub" les instructions fonctionne.

mais si la chaîne est "hi my video is http://www.youtube.com/watch?v=6zToqLlM8ms&playnext_from=TL&videos=qpCvM5Ocr3M&feature=sub" ne fonctionne pas

pourquoi?

comment puis-je faire?

merci

+0

Actuellement, le modèle fonctionne, donc peut-être que le problème est avec replace_url. Essayez de courir avec "***" (à la place replace_url) et voyez par vous-même. – Anton

Répondre

0

Beucase ne correspond pas à un motif. Obtenez avant l'url ajouter une expression pour attraper des conneries avant url.

Vous pouvez également essayer de faire correspondre un motif regex à chaque mot. Parce que l'URL est toujours un mot séparé d'un mot.

+0

Votre déclaration est incorrecte. Essayez ceci (en irb): '" salut ma vidéo est http://www.youtube.com/watch?v=6zToqLlM8ms & playnext_from = TL & vidéos = qpCvM5Ocr3M & feature = sub ".gsub (/ http [s]?: \/\/[^ \ s] + /, "!") ' – Anton