2016-11-02 2 views
0

この問題を解決するにはどうすればいいか分かりませんでした。私はページの番号の値を更新/増やすことができる必要がある2種類のURLを持っています。ルビーの文字列の一部を抽出して置き換えることを確認します

のURL 1:上記で

forum-351-page-2.html 

、私はn個のページに対してこのURLを変更したいと思います。だから私は指定された範囲のsay-page-1からpage-30まで新しいURLを生成したいと思う。しかし、それは私が変えたいのです。ページn.html

のURL 2:

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

2番目のURLは異なっているが、私はそれが簡単に訪問ですFEAL。最初のurlに

答えて

1
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" 
+0

+1ありがとう、これは素晴らしいです。この仕組みを解読していただきありがとうございます。私はRubyでRegexを学ぶのに使える良いリソースは何ですか?問題や解決策があるので、私は練習できますか?私はそれに悲観的に気付かない。 – Doublespeed

+0

[こちらのチュートリアル](http://www.regular-expressions.info/tutorial.html)をご覧ください。 –

1

url1 = "forum-351-page-2.html" 

(1..30).each do |x| 
    puts url1.sub(/page-\d*/, "page-#{x}") 
end 

あなたは2番目のURLのために同じことを行うことができます。この意志出力

"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" 

。簡単にするために

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

+1。私はそれが正規表現の個々の部分を分解するので、他の答えが勝利を与えた。ご協力ありがとうございました。 – Doublespeed

関連する問題