初心者の為の正規表現

文章やデータをかんたん訂正 仕事や日常でも使える正規表現(前編)

沢山のソフトに付いている検索や置換。この機能ってもっと便利に使えるんですよ。そう正規表現なら!

名前も難しそうだし、若干取っつきにくいこの機能ですが、普段長い文章(ブログやお仕事)を書く方や、長々としたデータを扱う方は、ちょっと無理してでも最後まで目を通して(実際やって)みてください。きっと何処かで役にたつと思います。

KIP Project

撮影/松原 豊(office369番地)

今回の内容は、「デジタルの恩恵をもっとも享受できるのは田舎である」をテーマに毎月 三重県津市美里町の古民家カフェでIT・PC関連の講習をしているKIP Projectで講演したときのものです。お客さんは普段プログラムなどに一切関わらない方ばかり。普段PCはWeb見たり事務仕事や文章を書くのに使ってるって方向けに話しました。
私も住んでいる美里町は”車で”最寄のスーパーまで20分強/コンビニまで10分って感じの所ですが、自然が綺麗でなんだか楽しい人の沢山居る田舎です。

KIP Project
http://kip-project.info/

その時の発表(先にこちらを見ていただいたほうが分かりやすいかもしれません)
http://prezi.com/vszcr8fow-bo/presentation/

今回の内容

検索と置換
正規表現とは
正規表現で使う記号の紹介
自己学習の為のサイトの紹介
正規表現を使えるソフトの紹介

検索と置換


正規表現…を説明する前に、ちょっとおさらいです。
検索や置換って使ったことありますか?

検索 → 文字を見つける
置換 → 文字を置き換える(文字を入れなければ文字を消す)

文字を見つけたり、置き換えることが出来る便利な機能です。

例)月見そば を たぬきそば に変える

8月1日 月見そば
9月1日 本日のパスタ

検索文字:月見
置換文字:たぬき 

8月1日 たぬきそば
9月1日 本日のパスタ

文字を扱うようなソフトにはだいたいついているし、たいていの場合 目で見て置き換えるよりも早くて正確です。

お次は、
例)8月1日 を 8/1 に変える

8月1日 月見そば
9月1日 本日のパスタ

検索文字:月
置換文字:/
検索文字:日
置換文字:

8/1 /見そば
9/1 本のパスタ

日付は思ってる結果になったけど、”/見そば”になり”本のパスタ”になってしまいました。

もちろん例のように2行なら、手でやった方が早いし僕もそうします。

でもこれが100行あったらどうしますか?
Excelを使えば早いって?うん。同じような形式でずっと並んでる&普段それで慣れてるならそれでも良いと思います。でも、文章中に日付が点在してるなど、Excelでは扱えない感じに並んでるとしんどいですよね。

他にも…

改行をどうにかしたい
ありがちなのは単純な置換で文字(行)を消した後 改行だけが残ってしまったり、Webのページをコピペしたら謎の改行が沢山入ってるなど。

みかん

ぶどう

りんご
↓
みかん
ぶどう
りんご

後ろに追記したいが置換対象の文字がない
最後に一律”。”があれば、単純な置換でできたのに…

アンパンマン
カレーパンマン
しょくぱんまん
ジャムおじさん
バタコ
↓
アンパンマン 様
カレーパンマン 様
しょくぱんまん 様
ジャムおじさん 様
バタコ 様

文字の中に何かはさみたい
全て2012年08月なら単純置換を使うけど…

20120820
 ↓
2012-08-20

と言うことが単純な検索や置換ではできない。

.          ____
.       / \  /\  キリッ
.     / (ー)  (ー)\
.    /   ⌒(__人__)⌒ \   で、正規表現です
.    |      |r┬-|    |
.     \     `ー’´   /
.    ノ            \
.  /´               ヽ
. |    l              \
. ヽ    -一””””~~``’ー–、   -一”””’ー-、.
.  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))
.

正規表現とは?

“文章を記号で表現するもの” で、2012-08-20 は \d{4}-\d{2}-\d{2} と表せたりします。

でも今回は「検索や置換をより使いやすくする便利な記号」と思っておいてください。

このページを実際手を動かしながら最後まで読んでいただければ、上に書いてある”単純置換ではできなかった置き換え”ができるようになります!

記号?

これって何でしょうか??
うん。進入禁止の看板です。看板のどこにも「進入禁止」って書いてないけど、記号の意味が分かれば車で入っちゃあかんのやなぁって分かりますよね。道路標識のように正規表現にもこんな記号が沢山あり、それぞれ違った意味があります。

正規表現の記号(一部)

上の図は沢山ある内の一部で、他の記号を使うとかなり細かい表現も出来ますが、今回は(個人的に)よく使う10個位を紹介します。最初は取っつきにくいですが、ちょっと我慢して見てやってください。

その前に用語の説明


行頭は行の最初の文字が始まる前の部分。行末は行の最後の文字の次の部分。改行は行末の最後に入っている次の行へのしるしです。改行はワープロのソフト使ってると最後に↵な感じの記号が入ってますよね。”最初の文字の前”とか”最後の文字の後”とか普段はあんまり意識しませんがこの辺が大事になってきます。

^
行頭

読み方:カレット、キャレット 出し方:半角でかなの「へ」を押す
^が記号。正規表現の記号は全部半角で書きます。

まずは普通に検索した場合。
(下記の濃い色の部分が検索された場所やと思ってください。)

例)
今日は正規表現を学びます。
正規表現を覚えると便利ですよ。
ビバ!正規表現

検索文字:正規表現

今日は正規表現を学びます。
正規表現を覚えると便利ですよ。
ビバ!正規表現

次に行頭の記号を付けて検索。

例)
今日は正規表現を学びます。
正規表現を覚えると便利ですよ。
ビバ!正規表現

検索文字:^正規表現

今日は正規表現を学びます。
正規表現を覚えると便利ですよ。
ビバ!正規表現

^は行頭の記号なので、行のはじめの「正規表現」と言う字=2行目の「正規表現」だけが検索されました。
こんな風に目で見える文字だけではなく、「場所」の情報を引っ付けて検索することなどができるのです。

注意点
正規表現の記号はOSに最初から付いている「メモ帳」などでは動きません。各OSで対応しているソフトを末尾にまとめましたが、今回は下記のブラウザで動くツールを使ってみましょう。

やってみようの準備)
正規表現は眺めてるだけではフーンで終わってしまいます。ぜひ、手を動かして実際にやってみましょう。

GREPREP TIPS
(テキストの反復作業をいつでもどこでも手軽に効率化できるWebツール)
http://ltside.com/grepreptips/

ツールの説明
上記のサイトに行ったら、上の方の”GREPREP TIPS を起動する”を押してください。下の画面が出てきます。
このツール 色々な機能があって便利なのですが、今回は”正規表現を使って置換する”だけ使います。

1に例題をコピペして、2の「正規表現入力を許可」を忘れずにチェックし、3に検索したい文字、4に置き換えたい文字を入力しましょう。「文字列置換」をクリックすると、1の場所で置換されます。

今日は正規表現を学びます。
正規表現を覚えると便利ですよ。
ビバ!正規表現

↑の3行をツールの1の部分にコピペしてください。

検索文字:^正規表現
置換文字:★


^正規表現を3へ貼り付け、
を4へ貼り付け、
2のチェックを忘れず押して、5を押してください。

今日は正規表現を学びます。
★を覚えると便利ですよ。
ビバ!正規表現

1の部分がこうなりましたか?

他にもやってみましょう。
6の「置換前に戻す」かその隣の「クリア」を押してから例題を元の状態に戻し、検索文字と置換文字を入力しなおします。

やってみよう)
例題)
今日は正規表現を学びます。
正規表現を覚えると便利ですよ。
ビバ!正規表現

検索文字:^
置換文字:>

こうなるはず)
>今日は正規表現を学びます。
>正規表現を覚えると便利ですよ。
>ビバ!正規表現

「文字列置換」を何度か押してみてください。どんどん>が増えていきます。
どうでしょう。簡単でしょ?

$
行末

読み方:ダラー、ドルマーク 出し方:Shiftを押したまま数字の4を押す

例)
今日は正規表現を学びます。
正規表現を覚えると便利ですよ。
ビバ!正規表現

検索文字:正規表現$

今日は正規表現を学びます。
正規表現を覚えると便利ですよ。
ビバ!正規表現

今度は、行末の記号を付けたので3行目のみ検索されました。
行頭のときは記号を頭につける^正規表現でしたが、同じ感じで”$正規表現”ではなく、行末なので”正規表現$”な点に気をつけてください。

やってみよう)
例題)
今日は正規表現を学びます。
正規表現を覚えると便利ですよ。
ビバ!正規表現

検索文字:正規表現$
置換文字:★

やってみよう)
例題)
今日は正規表現を学びます。
正規表現を覚えると便利ですよ。
ビバ!正規表現

検索文字:。$
置換文字:。。。

検索文字:^ビバ!正規表現$

って正規表現の記号を組み合わせて書くことも出来ます。

組み合わせて書くことによって、

ビバ!正規表現ですよ
ビバ!正規表現
なんと言うかビバ!正規表現

こんな風に同じような文章でも2行目だけ検索する事が出来ます。

\n
改行

読み方:円、円マーク 出し方:半角の状態で右上の¥を押した後、英字のnを打つ

次は改行です。改行を自由に扱えるとこれだけでも色々できます。

例)
今日は正規表現を学びます。
正規表現を覚えると便利ですよ。
ビバ!正規表現

検索文字:\n
置換文字:(空白)

今日は正規表現を学びます。正規表現を覚えると便利ですよ。ビバ!正規表現

“改行”を消したので一列になりました。

ちなみに、改行の記号は文中で使うことも出来ます。

例)
1.
今日は正規表現を学びます。
2.
今日は正規表現を学びます。

検索文字:1.\n今日は正規表現を学びます。
とすると

1.
今日は正規表現を学びます。
2.
今日は正規表現を学びます。

こんな風に上だけ検索に合致します。

普段は単なる”次の行へ”としか意識しない改行も何だか意識できる気分になってきましたか?

やってみよう)
例)
今日は正規表現を学びます。
正規表現を覚えると便利ですよ。
ビバ!正規表現

検索文字:\n
置換文字:(空白)

やってみよう)
例)
今日は正規表現を学びます。正規表現を覚えると便利ですよ。ビバ!正規表現

検索文字:。
置換文字:。\n

\t
タブ

読み方:円、円マーク 出し方:半角の状態で右上の¥を押した後、英字のtを打つ

例)
美里地区人口
年齢 男性 女性
00歳 125 115
10代 158 159
20代 184 178
30代 201 181
40代 185 184
50代 261 280
60代 328 337
70代 225 303
80代 148 224
90代 18 56

検索文字:\t
置換文字:,

美里地区人口
年齢,男性,女性
00歳,125,115
10代,158,159
20代,184,178
30代,201,181
40代,185,184
50代,261,280
60代,328,337
70代,225,303
80代,148,224
90代,18,56

この記号はデータを扱う方が便利に使えると思います。Webから取ってきた文章からcsvを作ったり、書式の混在したデータをひとつの書式にしたりできます。

やってみよう)
例)
美里地区人口
年齢	男性	女性
00歳	125	115
10代	158	159
20代	184	178
30代	201	181
40代	185	184
50代	261	280
60代	328	337
70代	225	303
80代	148	224
90代	18	56

検索文字:\t
置換文字:,

ここからは若干細かい話====================================================

.   / ̄ ̄\
. /   _ノ  \
. |    ( ●)(●)
. |     (__人__)  すでに細かいのに、さらに細かく?
.  |     ` ⌒´ノ    そりゃないだろ、常識的に考えて…
.  |         }
.  ヽ        }
.   ヽ     ノ        \
.   /    く  \        \
.   |     \   \         \
.    |    |ヽ、二⌒)、          \
.

後編に続く。

同一タグの最新記事:

同一カテゴリ(IT)の最新記事:

最近投稿された記事:

他のカテゴリの記事も読んでみる: