他のすべての文字 (何でもかまいません) を正規表現でスキップまたは置換するにはどうすればよいですか?
"abc123.-def45".gsub(/.(.)?/, '@')
取得するため
"a@c@2@.@d@f@5"
代わりに最初の文字をキャプチャし、書き戻します。
"abc123.-def45".gsub(/(.)./, '\1@')
2 番目の文字をオプションにしないことが重要です。そうしないと、長さが奇数の文字列では、最後の文字が一致し、a@
が追加されます。がないと?
、最後の文字は単純に失敗し、そのまま残ります。
シーケンス内の @ の置き換えを避けるためにこれを行うこともできます
"abc123.-def45".gsub(/([^@])[^@]/, '\1@')