使用正则表达式替换 ruby 中的特定文本

replace specific text in ruby using regex

在 ruby 中,我试图用新数字替换下面 url 的 粗体 部分:

/ShowForum-g1-i12105-o20-TripAdvisor_Support.html

我将如何定位和替换 -o20- 使用 -o30- 或 -o40- 或 -o1200-,同时保留 url 的其余部分 完整? urls 可以是任何东西,但我希望能够找到 -o20- 的这个确切模式并将其替换为我想要的任何数字。

提前谢谢你。

希望这会奏效。

url = "/ShowForum-g1-i12105-o20-TripAdvisor_Support.html"
url = url.gsub!(/-o20-/, "something_to_replace") 
puts "url is : #{url}"

输出:

sh-4.3$ ruby main.rb                                                                                                                                                 
url is : /ShowForum-g1-i12105something_to_replaceTripAdvisor_Support.html 
url[/(?<=-o)\d+(?=-)/] = ($&.to_i + 10).to_s

上面的代码片段会将数字替换为(本身 + 10)。

url = '/ShowForum-g1-i12105-o20-TripAdvisor_Support.html'

url[/(?<=-o)\d+(?=-)/] = ($&.to_i + 10).to_s
#⇒ "30"
url
#⇒ "/ShowForum-g1-i12105-o30-TripAdvisor_Support.html"
url[/(?<=-o)\d+(?=-)/] = ($&.to_i + 10).to_s
#⇒ "40"
url
#⇒ "/ShowForum-g1-i12105-o40-TripAdvisor_Support.html"

替换成你想要的数字:

url[/(?<=-o)\d+(?=-)/] = "500"
url
#⇒ "/ShowForum-g1-i12105-o500-TripAdvisor_Support.html"

更多信息:String#[]=