正規表現勉強会
解説:10分で正規表現
- 正規表現とは:
- 文字列の集合を表す規則、あるいはその規則を使って書かれた文字列のこと
- その中でも特に、ほどよくシンプル・便利で、実用上良く使われるもの
- こういうやつ:
- httpの後に、sがあってもよく、その後に//lipscosme.com/posts/ が続き、その後に整数が続くような文字列の集合
- https://lipscosme.com/posts/1234 とか http://lipscosme.com/posts/999 とか(無数の文字を1つの文字列で表現できる)
- なんで有名なのか:
- シンプルだけど強力だから
- また、その理論的な背景がしっかりあるから
- 1951年生まれで枯れている(コンピュータが1940年代頃生まれなので、かなり由緒正しい→一度覚えるとずっと使える。SQL が 1974 年生まれ。Ruby が 1991 生まれ)
- どのくらい強力なのか:
- という話をコンピュータサイエンスの入門クラスで習うけど今日は話さない
- 「コンピュータとは何か」に関する面白い理論がある
- 正規表現の構成要素
- 環境によって使えなかったり、書き方が違ったりするので注意(特にマイナーなもの。以下、概ね下に行くほどマイナーなもの)
- 基本的な構成要素:
- 文字
- 例:, , ,
- 連結(何も記号を置かずに、単に並べて書く)
- 例:
- 選択記法:|
- 例:
- 繰り返し記法:*
- 例:
- 無限個の文字列を表している(正規表現のパワー)
- いろいろな記法:
- 便利な記法が色々ある
- 簡潔に書けるだけのものもあれば、↑の基本的な構成要素だけでは表現できない集合を扱えるようになる強力なものもある
- 基本的な構成要素で書き換えられるかどうかを考えてみると理解の確認になる
- 括弧:()
- 例:
- X+:正規表現 X を1回以上並べた正規表現
- 例:
- X?:正規表現 X を0回または1回並べた正規表現
- 例:
- .:任意の文字
- 例:
- []:[]内のいずれかの文字
- 例:
- ただし [^...] と書いたときに限っては...ではない文字
- \1, \2...:n番目の(開き)括弧によって囲まれた式にマッチした文字列
- 例:
- {a,b}:a回以上b回以下の繰り返し
- 例:
- 特殊な文字
- \d で数字、\w でアルファベット、\s で空白文字(半角スペース、タブ、改行等)等
- [0-9]:0から9の間の文字(\d と同じ)
- とかとかとかいろいろある
- 文字の範囲は自明ではなく、文字コードの罠に注意
- 他にも色々あるので、使ってるツールのドキュメントを読みましょう
- 例:(vs )とか、 (vs )とか
演習:正規表現クロスワード
- 練習を順番にやっていくと良さそう
- 正規表現の基本を理解した上で、tutorial いじってればルールがわかってくるはず
- 目指せ experienced 突入🔥
- help ボタンを押すと、チートシートが出てくる
- 困ったら気軽に📍読んでください