非エンジニアさんもおいで! テキストエディタと正規表現で遊ぼう!

regex-Regular-Expression
こんにちは。ナガオカ(@boot_kt)です。

 

正規表現ってご存知ですか?

いや、知らなくてもいいです

 

まぁ、超絶大雑把に言うと、テキストを検索したり置換したりするのに便利な仕組みです

難しいんじゃないの?

と思うかもしれませんが、

 

えぇ~っと・・・

 

そんなことあります!!!(笑)

 

まぁ、でもこの記事ではそんな難しいことは一切やっていません

正規表現って何か分からないけど、こんな事出来るんだねぇ、ふーーーーん・・・

って思ってもらえれば、それでいいです

 

この記事のザックリした内容
想定する読者

  • パソコンで文字を扱うすべての人!
    エンジニアかどうかは全く関係ないです!
  • 正規表現なんて全く知らねーーーって人
  • 文字を結構扱う人(ライターさん、ブロガーさんにもお役に立てるかも)

 

この記事であなたが知れること

  • 正規表現の雰囲気、えぇあくまでも雰囲気だけです(笑)
    決して、正規表現の事は分かりません!!
    そもそも正規表現のことを解説してないです
    正規表現の入門の入門の入門の、更にもう一つ入門ぐらいに思ってください

    この記事の目的は雰囲気を感じてもらうことですので、理屈は書いていません

    この記事で正規表現に興味なんか持ってもらっちゃったりするとめっちゃ嬉しい!

 

この記事でやること

  • 正規表現を使った検索と置換
合わせて読みたい
正規表現の解説と、Atomの正規表現のプラグインの説明をしています
>> 正規表現の第一歩はAtomのregex-railroad-diagramを使おう!

 

 

 

 

 

準備するもの

正規表現が使えるテキストエディタが必要です。

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とかで開くと読みやすいと思います

no,name,age,position
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であれば普通は CtrlF
Macであれば普通は commandF

 

以下の文字を検索してみてください

^([0-9]),
正規表現の検索-サクラエディタ

検索画面

 

なんじゃこれ?
と思うかもしれませんが、こういう記号を使って表現するのが正規表現です

解説はしませんが、0~9の数字を表しているのかなぁ・・・?
ってぐらいに思ってもらえればOKです

 

で、検索結果はどうですか?
※通常のテキストエディタであれば、検索にヒットした文字列に色が着くはず

どうですか?
先頭の数字だけがヒットしていますか?

しかも、一桁の数字のみがヒット!!

しかもしかも!!!

林家木久扇と林家三平の後ろにある一桁の数字はヒットしていない!!!

正規表現の検索-サクラエディタ

検索結果:林家木久扇と林家三平の後ろにある一桁の数字はヒットしていないことにも注目

正規表現を使うと、ヒットさせたい/させたく無い場所を狙うことができるのです

 

次に、no項目の1桁数字をゼロパディングして2桁に置換してみよう

テキストエディタで置換画面を表示してください

置換画面のショートカット
Windowsであれば普通は CtrlRCtrlH(一般的にはR、MicrosofはHが多い気がする)
Macであれば普通は commandFoptioncommandF

検索対象文字は先程と同じく、

^([0-9]),

置換文字は、

0\1,
正規表現の置換-サクラエディタ

置換画面

 

これで置換するとどうでしょうか?

先頭の数字19がこんな感じでゼロ有りの二桁になっていませんか?
※赤文字の0に注目!

no,name,age,position
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でゼロパディングしたものをそのまま使ってください

no,name,age,position
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

正規表現の置換-サクラエディタ

検索前

 

先頭の二桁数字を検索してみよう

検索画面を表示して、以下の文字を検索してください

^([0-9][0-9]?)

検索画面

 

01とか02とかがヒットしていますよね?

正規表現の検索-サクラエディタ

検索結果

 

行末のposition(YELLOWとかPINKとか)を検索してみよう

検索画面を表示して、以下の文字を検索してください

([a-zA-Z]+)$
a~zとA~Zを検索するのかな?
ぐらいに思ってください

正規表現の検索-サクラエディタ

検索画面

 

行末の色のアルファベット(YELLOWとかPINKとか)がヒットしていますよね?

ここで注目して欲しいのは二点

  • 大文字も小文字もヒットしている
  • name項目のアルファベットにはヒットしていない

 

もちろん理屈は知らなくていいです、ヒットさせる/させないをコントロールできているんだという雰囲気を感じてください

検索結果:行末の色のアルファベットのみがヒット

 

置換と言うか、、、nopositionを入れ替えます!!

※正規表現を使用するのチェックを忘れずにね

  1. 置換画面を出します
  2. 検索対象文字にはこれを入力
    ^([0-9][0-9]?)(,.+,)([a-zA-Z]+)$
  3. 置き換え文字にはこれを入力
    $3$2$1
  4. 置換実行!!
正規表現の置換-サクラエディタ

置換画面:$1、$2、$3に注目

正規表現の置換-サクラエディタ

置換結果:行頭にあった2桁数字と行末にあったアルファベットが入れ替わっている事に注目(1行目のタイトルの部分は入れ替わらないですよ)

 

どうでしょう?
no項目とpotision項目が入れ替わっているでしょうか?

入れ替わっていますよね!!!

 

どうです!?

便利じゃないっすか!?
便利じゃないっすか!?
便利じゃないっすか!?
便利じゃないっすか!?

って言うか、、、、

 

メチャクチャ、面白くないっすか!!!??

 

正規表現の知識を付けるだけで、こんな簡単な操作で文字の入れ替えとか、効率の良い検索ができるんですよ!

僕はこれが楽しくて楽しくて!!!!

 

この楽しさがあなたに伝わっていれいいんですが、

ぜひ、正規表現をお試しください!
マジモンにオススメです!

 

広告




 

さいごに、

どうでしたでしょうか?

正規表現って面白そうだな、と感じて頂けましたでしょうか?

 

正規表現って、、、名前がなんか堅苦しそうで、難しそうなんですよね・・・(笑)
この記事では解説していませんが、記号を使いまくるので直感的に読めないんですよね

 

でも、めちゃくちゃ強力なんですよ!!

しかも楽しい!! 面白い!!!

 

どこがやねんっ!? オモンないわっ!

って言われるかも知れませんけど・・・
使っていけば、きっと分かってもらえます
逆に言えば使わないと分からないと思います。

 

使いこなすとなると難しいですけど、でも一度に全てを覚える必要はなくて、ちょっとずつ使っていけばいいんですよ
少しずつ使うだけでも、正規表現の強力さ便利さは分かると思います

 

特にプログラミングをする人は、正規表現を必ず覚えて欲しいです!!!
正規表現を知らずにプログラミングするなんて危険極まりないです!(ちょっと言い過ぎ)

 

とか言いながら、実は僕もそれほど知っているワケじゃないです(笑)
知っている範囲で使っていたり、ググって調べて使ったりしています

使っていく中で正規表現の使い方を少しずつ少しずつ覚えていきました

 

あなたもぜひ正規表現を使ってみてください

というか、正規表現で遊んでください!

 

正規表現オモロイよ~~~~~!

 

次の記事はコチラ
本記事とは違って、正規表現の解説と、Atomの正規表現のプラグインの説明をしています
>> 正規表現の第一歩はAtomのregex-railroad-diagramを使おう!

参考書籍

正規表現に興味が出ましたら、これらの本で勉強してみてはいかがでしょうか?
正規表現は知ればしるほど面白いんですよ!!!

マジでっ!!!

正規表現はこの一冊でいいと思いますけど・・・・
分厚いので、読むの挫折しそうなので、最初の一冊目としてはオススメしません(笑)

正規表現が面白いかも?と思い始めてから読むと一気に正規表現が好きになると思います

オライリーって、紙面はなんか無愛想で文面は堅い気がして、個人的にはあまり好きじゃないんですよ(笑)

でもこの本は、オライリーなのに結構楽しく読めます
文面は結構軽い感じがして好きです

これは正規表現の本ではありませんが、第3章で正規表現について書かれてあります

かなり分かりやすく簡潔にスッキリと書かれてあると思いますので、正規表現を知るのに非常に良いと思います

この本には正規表現以外にも色々な情報が書かれてありますので、非常にオススメの本です!!!

 

ちなみに第3章を書かれたのは、give IT a tryというブログや、Qiitaにもたくさん投稿されていらっしゃるIto Junichiさんです。

 

正規表現に慣れるまでは、以下のようなリファレンス系をオススメします

 

プログラミングのレッスンに興味がある方、レッスン内容を聞いてみたい方、なんなりとお問い合わせください。
無料体験レッスンもありますのでお気軽にどうぞ!!!

 

 

広告
広告
regex-Regular-Expression

プログラミングを楽しもう!

初心者向けのプログラミング教室やってます!
Skype or 対面で対応致します。
C言語、ExcelVBA、Scratch、Linux初歩の初歩といろいろなコースがあります。
※Rubyコース準備中!

小学生のお子さまにはScrachでプログラミングを楽しんで頂けます。

無料体験がありますので、是非お気軽にレッスンを受けてみてください。
プログラミングは楽しいですよ!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

Windows/Mac/Linuxを使う現役システムエンジニア&プログラマ。オープン系・組み込み系・制御系・Webシステム系と幅広い案件に携わる。C言語やC#やJava等数多くのコンパイラ言語を経験したが、少し飽きてきたので、最近はRubyやPython、WordPressなどのWeb系を修得中。初心者向けのプログラミング教室も運営中。オンライン・対面・出張等でプログラミングをレッスンします。