7
votes

Comment extraire une sous-chaîne de la chaîne en utilisant une expression régulière?

Je suis nouveau dans des expressions régulières à Ruby.

La chaîne ressemble à quelque chose comme http://www.site.com/media/pool/product_color_purple.jpg et j'essaie d'extraire de ce bit qui a la couleur dedans. Cela peut être une longueur variable, car certaines des couleurs sont comme prince_purple.jpg .

donc j'ai: xxx

Quelle couleur retourne la chaîne à nouveau, au lieu du bit extrait, qui est la couleur. Qu'est-ce qui ne va pas ici?


2 commentaires

Match Retours MatchData et "MTCH [0] est équivalent à la variable spéciale $ & et renvoie toute la chaîne correspondante. MTCH [1], MTCH [2], et Donc, sur renvoyer les valeurs des rafraîchies correspondantes "- ruby-doc.org/core /classes/matchdata.html


Votre lien est cassé. Il vaut mieux montrer ici ce que tu voulais montrer.


5 Réponses :


0
votes
>> s = %w(http://www.site.com/media/pool/product_color_purple.jpg http://www.site.com/media/pool/product_color_prince_purple.jpg) 
#=> ["http://www.site.com/media/pool/product_color_purple.jpg", "http://www.site.com/media/pool/product_color_prince_purple.jpg"]
>> s.map { |c| c.match(/\w*_color_(\w+).jpg/)[1] } 
#=> ["purple", "prince_purple"]

0 commentaires

0
votes

Vous pouvez essayer cette regex.

/color_(.*)?.jpg/


0 commentaires

2
votes

sans regexp comme exemple d'une autre façon de le faire xxx pré>

pour cela, je colle avec regexp cependant. P>

color = url.match(/.*_(.*)\./)[1]


0 commentaires

3
votes
url="http://www.site.com/media/pool/product_color_purple.jpg"
color = url.match(/color_(.*).jpg/)[1]
#=> purple

0 commentaires

13
votes
str="http://www.site.com/media/pool/product_color_purple.jpg"
colour = str.match(/color_([^\/.]*).jpg$/)
puts "Colour is #{colour[1]}"
You not get "Colour is purple" because match returns MatchData, not string

0 commentaires