Ruby 轨道3和x2B;正则表达式-替换字符串的一部分,出现1次
我不熟悉Rails,更不熟悉regex。一直在四处寻找,但我被封锁了 我有这样一个字符串: 当前:Ruby 轨道3和x2B;正则表达式-替换字符串的一部分,出现1次,ruby,regex,ruby-on-rails-3,Ruby,Regex,Ruby On Rails 3,我不熟悉Rails,更不熟悉regex。一直在四处寻找,但我被封锁了 我有这样一个字符串: 当前:http://zs.domain.com/user_images/123456789/imageName_size.ext 通缉:http://zs.domain.com/user_images/123456789/imageName.ext 我终于做到了: =>正在丢失与的所有事件 picture.gsub!(/_([a-z0-9-]+)/, '') 或者这个: =>仅更改最后一次出现,但丢
http://zs.domain.com/user_images/123456789/imageName_size.ext
通缉:http://zs.domain.com/user_images/123456789/imageName.ext
我终于做到了:=>正在丢失与的所有事件
picture.gsub!(/_([a-z0-9-]+)/, '')
或者这个:
=>仅更改最后一次出现,但丢失扩展名
picture.gsub!(/_([a-z0-9-]+)**.(png|gif|jpg|jpeg)**/, '')
你快到了。第二个参数是替换匹配的字符串,您可以从匹配中重用匹配的组。这将实现以下目的:
picture.gsub!(/_([a-z0-9-]+).(png|gif|jpg|jpeg)/, '.\2')
为了适应评论中提出的附加条件:
picture.gsub!(/_([^\/]+).(png|gif|jpg|jpeg)/, '.\2')
markijbema的答案将改变字符串
../xxx\u yyyygifzzz/…
进入
../xxxgifzzz/…
为了避免这种情况,您可以执行以下操作:
picture.gsub!(/_[^\/]+(?=\.[^\.]+\z)/, '')
被理解为字符串后面的上下文,不会包含在匹配中(?=…)
描述了字符串的结尾,因此当某些中间目录包含上述字符串时,可以安全地使用此regexp\z
/home/laurent/Dev/blog/app/views/users/show.html.erb:10:char类过早结束:/(home/laurent/Dev/blog/app/views/users/show.html.erb:10:syntax error,意外的']',预期的'')…=(@user.picture.gsub(/([^/]+)(png | gif | jpg | jpeg)/,“\2”)…^
哦,对不起,您需要一个\作为/(答案中已修复)此regexp有一些问题。请参阅我的答案。