string.sub
は、最初のインスタンスを置き換えるだけのようです。それまたはすべてのパターンを置き換えることができる別の方法のオプションはありますか?あなたはperlのような正規表現の中でそれを行うことができますか?
(r/blah/blah /のようなものだと思います)
...そして、なぜ地球にいるのか教えてくれる人に+1してくださいstring.sub
最初の一致のみを置き換えますか?
String.gsub でうまくいくはずです。
引用文書:
gsub(pattern, replacement) → new_str
2番目の引数をall個のパターンに置き換えたstrのコピーを返します。パターンは通常、正規表現です。文字列として指定した場合、それに含まれる正規表現のメタ文字は文字どおりに解釈されます。
\\d
は、数字の代わりに、バックラッシュとそれに続くd
に一致します。
sub
がパターンの最初の一致を置き換えるだけである理由を説明することはできますが、ドキュメントはそれよりもはるかに優れていると思います(コマンドラインのri String#sub
から):
str.sub(pattern, replacement) => new_str
str.sub(pattern) {|match| block } => new_str
Returns a copy of _str_ with the _first_ occurrence of _pattern_
replaced with either _replacement_ or the value of the block.