🍒 はじめに
チェリー本輪読会の第8週目のエントリーになります。
輪読会の概要については第1週目にまとめています。
- 第1週目のエントリーはこちら
- 第2週目のエントリーはこちら
- 第3週目のエントリーはこちら
- 第4週目のエントリーはこちら
- 第5週目のエントリーはこちら
- 第6週目のエントリーはこちら
- 第7週目のエントリーはこちら
🍒 輪読会 第8週目まとめ
第6章6.1.1〜第6章6.2.2章まで
期間:2021年07月12日〜2021年07月16日
正規表現とは?
「パターンを指定して、文字列を効率よく検索・置換するためのミニ言語」
チェリー本ではこのように表現されています。
正規表現はRubyだけのものではなく、他プログラミング言語でも使える汎用的な表現方法です。
いくつかの文字列を一つの形式で表現するための表現方法とも言えます。
英語で書くと、Regular Expression となり、Regex, Regexpと略されます。
正規表現をゼロから学習するための参考資料(Qiita記事)
- 初心者歓迎!手と目で覚える正規表現入門・その1「さまざまな形式の電話番号を検索しよう」 - Qiita
- 初心者歓迎!手と目で覚える正規表現入門・その2「微妙な違いを許容しつつ置換しよう」 - Qiita
- 初心者歓迎!手と目で覚える正規表現入門・その3「空白文字を自由自在に操ろう」 - Qiita
- 初心者歓迎!手と目で覚える正規表現入門・その4(最終回)「中級者テクニックをマスターしよう」 - Qiita
チェリー本でも紹介されていますが、まずはこちらの伊藤さんのQiita記事を元に学習を進めていきました。
輪読会では、その1
からその3
までを取り上げました。その4
については、Qiita記事にもあるように「中級者向け」の内容となり、一気に難易度が上がっています。今回はチェリー本の本筋から外れてしまうため、一旦こちらは各自で目を通すだけにし、深追いするのはやめました。
メタ文字
正規表現では、さまざまなメタ文字が使われています。
メタ文字とは「コンピュータープログラムに与える文字列データの中で、特別な意味や役割を持つ文字のこと」です。\
、[ ]
、-
などのことを指します。
例えば、\d
は半角数字1文字を表します。[AB]
は、AまたはBが1文字であることを表しています。
正規表現とは、このようなメタ文字の組み合わせで表現する、検索・置換するためのミニ言語です。
RubyMineで正規表現の置換モードを使う
ショートカットコマンド command + R
にて、入力できる項目が表示されます。
その後、矢印の箇所をクリックにしONにすることで、正規表現の検索・置換モードへ切り替えられます。
このような形で、正規表現がマッチする箇所がハイライトされます。
タブ文字は何文字分か?
タブ文字は \t
で表現できます。
タブ文字の見た目が「スペース何文字分か」は、出力するエディタなりコンソールなりの設定によって異なるようです。Rubyではタブ文字は半角スペース2文字分が推奨されていることが多いため、私もRubyMineでは、文字数「2」へ設定しています。
Rubyでは、内部に含まれるものを記述する時、常に2文字のインデントが推奨されています。 参照:独習Ruby on Rails(40頁)
環境設定command + ,
から、エディター
> コードスタイル
> Ruby
で変更できます。
\t の代わりに\sを使うこともできる
\s
は、空白文字を表します。\s
には、タブ文字\t
改行文字\n
や復帰文字\r
なども含まれています。ただし、\s
にマッチする文字は、言語や環境によって違うので注意が必要です。
Rubyの場合は、こうなります。\s = [ \t\r\n\f]
正規表現との出会い
余談ですが、初めて正規表現と出会った時のことを思い出したため書きたいと思います。
🎓第6版 #Railsチュートリアル解説動画 第6章 (前編) を走破しました! https://t.co/5g2zl0yr3Y @RailsTutorialJPより #駆け出しエンジニア
— shirotamaki (@shirocks) November 22, 2020
正規表現でお酒が飲める…。そんな日が来るのか…汗
数ヶ月も前の話しですが、Railsチュートリアルへ取り組んでいるとき、講師の@yasulab さんが、解説動画内でこのようなことを仰っていました。
そこでは、正規表現の教科書とも言える、O'Reillyから出版されている本も紹介されていたのですが、こちらの本はなんと正規表現だけで528頁もあるそうです。(チェリー本の正規表現の章は25頁)
@yasulab さんも、こちらの本を全部は読んでいないそうで、正規表現は実際使っていくうちに覚えていったそうです。
やはり「手を動かす」ことが大事なのですね。
今回改めてチェリー本で正規表現を学び直すなかで、正規表現をツマミにお酒が飲める気はまったくしませんがww、コーヒーくらいなら楽しめるようになってきたと思います。
いつかは、フクロウ本にもチャレンジしてみたいです!
るりま勉強会(Kyoto.rbへ潜入!)
輪読会でお世話になっている(id:sanfrecce-osaka) さんの紹介で、この日(2021年7月11日)るりま勉強会が開催されることを知りました。Kyoto.rbで開催されるとのことで、初めて参加してみました。
以前、ブログや、LTの題材としても取り上げたり、日々慣れ親しんではいるものの、まだまだ知らないことも多く苦手意識がある「るりま」。今回、少しでも学び、気づきが得れればと思い参加しましたが、結果、とても良かったです。特にRuby熟練者からのるりまに関する話しは貴重で、とても学びの多い勉強会でした。
- 10年近くRubyを使っているが、それでも知らないメソッドはたくさんある。など、現役エンジニアからの声。
- るりまの読み方
permalink
,rdoc
とは?- ターミナルで
say
とすると、音声で読み上げてもらえる!(小ネタ的なことも!)
などなど。
同じく参加された(id:fuga__ch) さんのブログに詳しい勉強会の内容がまとまっています。 勉強会の詳細が知りたい方はぜひ!
また、今回の勉強会には多くのフィヨルド生や卒業生が参加されていました。普段より多くの参加者に対し、主催者の方も驚かれていましたww 有益な勉強会を開催してくださったKyoto.rbの皆さま、ありがとうございました!ぜひまた第二弾!楽しみにしております!
今日の Kyoto.rb フィヨルドという秘密組織の人がたくさん来てくれたので、潜入捜査が必要な気がしてきた。Ruby 学びたい。
— モスキートンはもう聞こえない#2 (@tomohi_ro) July 11, 2021
参考書籍
- 伊藤淳一 著/『プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで』/技術評論社/2017年https://gihyo.jp/book/2017/978-4-7741-9397-7
- 高橋征義、後藤裕蔵 著/『たのしいRuby第6版』/SBクリエイティブ/2019年https://tanoshiiruby.github.io/6/index.html
- プログラミング言語 Ruby リファレンスマニュアル https://docs.ruby-lang.org/ja/
- 小餅良介 著/ 『独習Ruby on Rails』https://www.shoeisha.co.jp/book/detail/9784798160689
🍒 まとめ
今週から入った正規表現。Qiitaの記事を中心に、その1
からその3
まで進めました。
こちらの記事は「正規表現初心者」を対象としている内容なので、とてもわかり易かったです。
謎の呪文が\d{2,5}[-(]\d{1,4}[-)]\d{4}
謎ではなくなり、基本的な正規表現についてはポイントを抑えることができました。
「手と目で覚える正規表現」
伊藤さんも仰っているように、手を動かして使い慣れていくことが、正規表現を身につける一番の近道だと思いました。今回学んだRubyMineの検索・置換モードや、Rubular を活用し身につけていきたいと思います。
次週も引き続き正規表現へ取り組みます。
では、また来週!(次回、第9週目)