[英]How do I extract a substring from string using a regular expression?
我是 Ruby 中的正則表達式的新手。
該字符串看起來像http://www.site.com/media/pool/product_color_purple.jpg
我試圖從中提取其中有顏色的位。 這可以是可變長度,因為某些顏色類似於prince_purple.jpg
。
所以我有:
colour = c.attr('src').match(/(.*)color_(.*).jpg/)
puts "Colour is #{colour}"
返回的顏色再次是字符串,而不是提取的位,即顏色。 這里出了什么問題?
str="http://www.site.com/media/pool/product_color_purple.jpg"
colour = str.match(/color_([^\/.]*).jpg$/)
puts "Colour is #{colour[1]}"
您沒有得到“顏色為紫色”,因為匹配返回 MatchData,而不是字符串
url="http://www.site.com/media/pool/product_color_purple.jpg"
color = url.scan(/color_(.*).jpg/)[0][0]
#=> purple
或者
url="http://www.site.com/media/pool/product_color_purple.jpg"
color = url.match(/color_(.*).jpg/)[1]
#=> purple
沒有正則表達式作為另一種方法的例子
url="http://www.site.com/media/pool/product_color_purple.jpg"
color = url[url.rindex("_")+1..-1].split(".")[0]
為此,我會堅持使用正則表達式。
color = url.match(/.*_(.*)\./)[1]
>> 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"]
你可以試試這個正則表達式。
/color_(.*)?.jpg/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.