I'm new to Rails, and furthermore to regex. Been looking around, but I'm blocked...
I have a string like this :
Current: 开发者_StackOverflowhttp://zs.domain.com/user_images/123456789/imageName_size.ext
Wanted: http://zs.domain.com/user_images/123456789/imageName.ext
I've managed to get to this :
http://a0.twimg.com/profile/1240267050/logo1.png => losing all occurrences withpicture.gsub!(/_([a-z0-9-]+)/, '')
or this :
http://a0.twimg.com/profile_images/1240267050/logo1
=> changing only the last occurrence, but losing the extension withpicture.gsub!(/_([a-z0-9-]+)**.(png|gif|jpg|jpeg)**/, '')
You're almost there. The second parameter is the string with which the match will be replaced, and you can re-use matched groups from the match. This will do the trick:
picture.gsub!(/_([a-z0-9-]+).(png|gif|jpg|jpeg)/, '.\2')
To accomodate for the additional conditions, as posed in the comment:
picture.gsub!(/_([^\/]+).(png|gif|jpg|jpeg)/, '.\2')
markijbema's answer will change the string
.../xxx_yyygifzzz/...,
into
.../xxxgifzzz/....
In order to avoid that, you can do this:
picture.gsub!(/_[^\/]+(?=\.[^\.]+\z)/, '')
(?=...)is understood as a context that follows the string, and will not be included in the match.\zdescribes the end of the string, so this regexp is safe to use when some intermediate directory includes a string like above.
加载中,请稍侯......
精彩评论