0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

rubyでの正規表現問題の解説

Posted at

rubyシルバーを勉強していくなかで、rubyの正規表現についてわからなかったので、解説していこうとおもいます。

今回は問題をもとにして、解説していこうとおもいます。

image.png

この問題を解く上で、必要になる知識が
➀破壊的メソッド
➁正規表現

➀破壊的メソッド

破壊的メソッドとは、オブジェクト自体を変更してしまうメソッドのことです。
破壊的メソッドがあるなら、非破壊的メソッドもあります。
言われてもピンとこないとおもいますので、この2つを比較しながら実際にコードを見ていきましょう

## 非破壊的メソッド
string = 'abcdefgh'
string.delete('a')
=> "bcdefgh"
p string
=> "abcdefgh"


## 破壊的メソッド
string = 'abcdefgh'
string.delete!('a')
=> "bcdefgh"
p string
=> "bcdefgh"

この2つからも分かる通り、前者は、aを削除しているのですが、stringを出力すると、aは削除されていないんですよね。
それに対して、後者は、aを削除して、stringを出力すると、a自体も削除されてしまうんです。

破壊的メソッドは原則的にメソッドの最後に「!」がつきます。あくまで原則ですので、気をつけてくださいね。
update,clearメソッドは「!」はついてませんが、破壊的メソッドです。

➁正規表現

とっつきにくいかもしれませんが、めちゃ大事なので勉強していきましょう。ぼくはこちらのサイトを参考にしているので、こちらをブクマしてみてください!

今回の問題

実行結果をみたとき、「あー、破壊的メソッドじゃないとだめだなぁ」って思わないといけないですね。
そのため、選択肢➁、➂に絞られることがわかります。
選択肢➂をみていきましょう。
この選択肢での、正規表現の中身は「0と5~9以外の数字と-を削除する」という意味です。
そのため、この選択肢はダメですね

選択肢➁が正解になります。
2,3,4 と 1 と - 『以外を』全て削除するという意味ですので、これが正解になります。

以上です。
何か間違いがございましたら、ご教示いただけますと幸いです。

0
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?