识别 ruby 中字符串的提取和替换部分



我一直很难找出如何着手解决这个问题。我有2种url,我需要能够更新/增加页面的数值。

Url 1:

forum-351-page-2.html

在上面,我想修改n个页面的url。因此,我想生成具有给定范围的新url,例如page-1到page-30。但这就是我想要改变的。page-n.html

Url 2:

href="forumdisplay.php?fid=115&page=3

第二个url是不同的,但我觉得它更容易访问。

R = /
    (?:             # begin non-capture group
      (?<=-page-)   # match string in a positive lookbehind
      d+           # match 1 or more digits
      (?=.html)    # match period followed by 'html' in a positive lookahead
    )               # close non-capture group
    |               # or
    (?:             # begin non-capture group
      (?<=&page=)   # match string in a positive lookbehind
      d+           # match 1 or more digits
      z            # match end of string
    )               # close non-capture group
    /x              # free-spacing regex definition mode
def update(str, val)
  str.sub(R, val.to_s)
end
update("forum-351-page-2.html", 4)
  #=> "forum-351-page-4.html"
update("forumdisplay.php?fid=115&page=3", "4")
  #=> "forumdisplay.php?fid=115&page=4"

第一个url

url1 = "forum-351-page-2.html"
(1..30).each do |x|
  puts url1.sub(/page-d*/, "page-#{x}")
end

这将输出

"forum-351-page-1.html"
"forum-351-page-2.html"
"forum-351-page-3.html"
...
"forum-351-page-28.html"
"forum-351-page-29.html"
"forum-351-page-30.html"

你可以对第二个url做同样的事情。

url1.sub(/page=d*$/, "page=#{x}")

最新更新