正規表現ってご存知ですか?
いや、知らなくてもいいです
まぁ、超絶大雑把に言うと、テキストを検索したり置換したりするのに便利な仕組みです
難しいんじゃないの?
と思うかもしれませんが、
えぇ~っと・・・
そんなことあります!!!(笑)
まぁ、でもこの記事ではそんな難しいことは一切やっていません
正規表現って何か分からないけど、こんな事出来るんだねぇ、ふーーーーん・・・
って思ってもらえれば、それでいいです
- パソコンで文字を扱うすべての人!
エンジニアかどうかは全く関係ないです! - 正規表現なんて全く知らねーーーって人
- 文字を結構扱う人(ライターさん、ブロガーさんにもお役に立てるかも)
この記事であなたが知れること
- 正規表現の雰囲気、えぇあくまでも雰囲気だけです(笑)
決して、正規表現の事は分かりません!!
そもそも正規表現のことを解説してないです
正規表現の入門の入門の入門の、更にもう一つ入門ぐらいに思ってくださいこの記事の目的は雰囲気を感じてもらうことですので、理屈は書いていません
この記事で正規表現に興味なんか持ってもらっちゃったりするとめっちゃ嬉しい!
この記事でやること
- 正規表現を使った検索と置換
Contents
準備するもの
正規表現が使えるテキストエディタが必要です。
Macであれば、この辺りかな
- mi
- CotEditor
- Atom
- Visual Studio Code
- Emacs
- Vim
Windowsであれば、この辺りかな
- サクラエディタ
- 秀丸エディタ
- MIFES
- oedit
- otedit
- Mery
- Atom
- Visual Studio Code
- Emacs
- Vim
※TeraPadは正規表現に対応していない
上記に挙げたもの以外に、正規表現に対応したテキストエディタであればなんでもいいです。
お使いのテキストエディタによって正規表現の解釈・実行結果が違う場合があります
また、使用すべき記号が違うこともあります
※エディタによっては、
$
の代わりに、\
やバックスラッシュを使う場合もあります
本記事ではややこしいことはしていないため、正規表現をサポートするエディタであれば想定通りの動きをすると思いますが、万が一動きがおかしければお使いのテキストエディタのヘルプで正規表現についてご確認ください
本記事ではWindows版のサクラエディタと秀丸エディタで動作確認しています
ちなみに秀丸エディタでは、$
の代わりに\
を使います
この記事でやることは2つ!!!
この記事でやることは 2つだけ です
あなたが正規表現を知らない場合、あれもこれもと詰め込まれるときっとワケ分からん状態になるでしょう
ですので、この記事でお見せするサンプルは2つだけです
しかも、理屈は無し!!!(笑)
動きと雰囲気だけを楽しんでください
で・・・・・・
もしも、
面白いじゃん!!!
って思われましたら、
ぜひこの記事をシェアしてください
もしくは、この記事の一番下にある いいね! のクリックをお願いします
面白く無かった場合、、、、、
「この記事面白くねーぞ!」 と、SNSで言いふらしてください!
(どっちみちシェアすることにwww)
さぁ! 正規表現で遊んでみよう!!
二つのサンプルをお見せしますので、ぜひ、あなた自身の手でやってくださいね!
- サンプル1:一桁数字を二桁に変換
- サンプル2:noとpositionを入れ替えてみよう!!
サンプル1:一桁数字を二桁に変換
一桁の数字をゼロパディングしてみましょう
数値を表現するとき、足りない桁をゼロで埋めることです
一番長い桁と見た目を合わせるために、桁の小さい数値に0を埋めることです
※赤字の0がゼロパディングです
ゼロパディング無し
1
2
3
4
・・・・
10
11
12
ゼロパディング有り(二桁)
01
02
03
04
・・・・
10
11
12
ゼロパディング有り(三桁)
001
002
003
004
・・・・
010
011
012
・・・・
100
101
102
➊ テキストエディタにこれを書きます
以下のテキストをテキストエディタへコピペしてください
テキストファイルとして保存する必要はありませんが、もし保存するなら拡張子を.csv
にして、Excelとかで開くと読みやすいと思います
1,Syunpuutei昇太,15,MC
2,Hayashiya木久扇,4,YELLOW
3,sannyuutei好楽,56,PINK
4,SANNYUUTEI小遊三,123,BLUE
5,SanYuuTei円楽,45,PURPLE
6,hayashiyaたい平,82,ORANGE
7,HAYASHIYA三平,2,CLOVE
8,yamada隆夫,15,RED
9,katsura歌丸,19,GREEN
10,TATEKAWA談志,26,white
11,Maeda武彦,31,brown
➋ まずは、no項目の1桁数字だけを検索してみよう
テキストエディタの検索画面を表示してください
検索画面でも置換画面でも正規表現を使用するみたいな選択肢がありますので、それにチェックor選択をしてください
.*みたいな表記になっていることもあります
Windowsであれば普通は Ctrl+F
Macであれば普通は command+F
以下の文字を検索してみてください
なんじゃこれ?
と思うかもしれませんが、こういう記号を使って表現するのが正規表現です
解説はしませんが、0~9の数字を表しているのかなぁ・・・?
ってぐらいに思ってもらえればOKです
で、検索結果はどうですか?
※通常のテキストエディタであれば、検索にヒットした文字列に色が着くはず
どうですか?
先頭の数字だけがヒットしていますか?
しかも、一桁の数字のみがヒット!!
しかもしかも!!!
林家木久扇と林家三平の後ろにある一桁の数字はヒットしていない!!!
正規表現を使うと、ヒットさせたい/させたく無い場所を狙うことができるのです
➌ 次に、no項目の1桁数字をゼロパディングして2桁に置換してみよう
テキストエディタで置換画面を表示してください
Windowsであれば普通は Ctrl+RかCtrl+H(一般的にはR、MicrosofはHが多い気がする)
Macであれば普通は command+Fかoption+command+F
検索対象文字は先程と同じく、
置換文字は、
これで置換するとどうでしょうか?
先頭の数字1
~9
がこんな感じでゼロ有りの二桁になっていませんか?
※赤文字の0に注目!
01,Syunpuutei昇太,15,MC
02,Hayashiya木久扇,4,YELLOW
03,sannyuutei好楽,56,PINK
04,SANNYUUTEI小遊三,123,BLUE
05,SanYuuTei円楽,45,PURPLE
06,hayashiyaたい平,82,ORANGE
07,HAYASHIYA三平,2,CLOVE
08,yamada隆夫,15,RED
09,katsura歌丸,19,GREEN
10,TATEKAWA談志,26,white
11,Maeda武彦,31,brown
ちなみに、置換は「ちかん」と読みます
痴漢を想像させるから不快だという人もいますが・・・
そんな事言ったら、、、コンピューターにはkill
コマンドってあるし、「殺す」って言葉もめっちゃ使うんですけど(笑)
サンプル2:noとpositionを入れ替えてみよう!!
今度は、先頭の数字(no)と、最後のpositionを入れ替えてみましょう!
置換操作で任意の文字と任意の文字を入れ替えることができるんですよ!!!
これが出来たら面白くないっスか??!!
no「これってもしかして…」
position「私達の中身が…」
「「入れ替わってるー??!!」」
➊ テキストエディタにこれを書きます
サンプル1でゼロパディングしたものをそのまま使ってください
01,Syunpuutei昇太,15,MC
02,Hayashiya木久扇,4,YELLOW
03,sannyuutei好楽,56,PINK
04,SANNYUUTEI小遊三,123,BLUE
05,SanYuuTei円楽,45,PURPLE
06,hayashiyaたい平,82,ORANGE
07,HAYASHIYA三平,2,CLOVE
08,yamada隆夫,15,RED
09,katsura歌丸,19,GREEN
10,TATEKAWA談志,26,white
11,Maeda武彦,31,brown
➋ 先頭の二桁数字を検索してみよう
検索画面を表示して、以下の文字を検索してください
01
とか02
とかがヒットしていますよね?
➌ 行末のposition(YELLOWとかPINKとか)を検索してみよう
検索画面を表示して、以下の文字を検索してください
ぐらいに思ってください
行末の色のアルファベット(YELLOWとかPINKとか)がヒットしていますよね?
ここで注目して欲しいのは二点
- 大文字も小文字もヒットしている
- name項目のアルファベットにはヒットしていない
もちろん理屈は知らなくていいです、ヒットさせる/させないをコントロールできているんだという雰囲気を感じてください
➍ 置換と言うか、、、no
とposition
を入れ替えます!!
※正規表現を使用するのチェックを忘れずにね
- 置換画面を出します
- 検索対象文字にはこれを入力
^([0-9][0-9]?)(,.+,)([a-zA-Z]+)$
- 置き換え文字にはこれを入力
$3$2$1
- 置換実行!!
どうでしょう?
no項目とpotision項目が入れ替わっているでしょうか?
入れ替わっていますよね!!!
どうです!?
便利じゃないっすか!?
便利じゃないっすか!?
便利じゃないっすか!?
便利じゃないっすか!?
って言うか、、、、
メチャクチャ、面白くないっすか!!!??
正規表現の知識を付けるだけで、こんな簡単な操作で文字の入れ替えとか、効率の良い検索ができるんですよ!
僕はこれが楽しくて楽しくて!!!!
この楽しさがあなたに伝わっていれいいんですが、
ぜひ、正規表現をお試しください!
マジモンにオススメです!
さいごに、
正規表現って面白そうだな、と感じて頂けましたでしょうか?
正規表現って、、、名前がなんか堅苦しそうで、難しそうなんですよね・・・(笑)
この記事では解説していませんが、記号を使いまくるので直感的に読めないんですよね
でも、めちゃくちゃ強力なんですよ!!
しかも楽しい!! 面白い!!!
どこがやねんっ!? オモンないわっ!
って言われるかも知れませんけど・・・
使っていけば、きっと分かってもらえます
逆に言えば使わないと分からないと思います。
使いこなすとなると難しいですけど、でも一度に全てを覚える必要はなくて、ちょっとずつ使っていけばいいんですよ
少しずつ使うだけでも、正規表現の強力さ便利さは分かると思います
特にプログラミングをする人は、正規表現を必ず覚えて欲しいです!!!
正規表現を知らずにプログラミングするなんて危険極まりないです!(ちょっと言い過ぎ)
とか言いながら、実は僕もそれほど知っているワケじゃないです(笑)
知っている範囲で使っていたり、ググって調べて使ったりしています
使っていく中で正規表現の使い方を少しずつ少しずつ覚えていきました
あなたもぜひ正規表現を使ってみてください
というか、正規表現で遊んでください!
正規表現オモロイよ~~~~~!
参考書籍
正規表現に興味が出ましたら、これらの本で勉強してみてはいかがでしょうか?
正規表現は知ればしるほど面白いんですよ!!!
マジでっ!!!
分厚いので、読むの挫折しそうなので、最初の一冊目としてはオススメしません(笑)
正規表現が面白いかも?と思い始めてから読むと一気に正規表現が好きになると思います
オライリーって、紙面はなんか無愛想で文面は堅い気がして、個人的にはあまり好きじゃないんですよ(笑)
でもこの本は、オライリーなのに結構楽しく読めます
文面は結構軽い感じがして好きです
かなり分かりやすく簡潔にスッキリと書かれてあると思いますので、正規表現を知るのに非常に良いと思います
この本には正規表現以外にも色々な情報が書かれてありますので、非常にオススメの本です!!!
ちなみに第3章を書かれたのは、give IT a tryというブログや、Qiitaにもたくさん投稿されていらっしゃる、Ito Junichiさんです。
正規表現に慣れるまでは、以下のようなリファレンス系をオススメします
プログラミングのレッスンに興味がある方、レッスン内容を聞いてみたい方、なんなりとお問い合わせください。
無料体験レッスンもありますのでお気軽にどうぞ!!!