ところでちゃんと例題やってくれてますか??
読んでるだけやと、良くある「○○する○○な方法 20個」と同じく”なるほどなるほど”で終わります。
ライフハック系と違って今すぐこの場で出来るから実践実践♪
[] カッコの中に入った文字のどれか(1文字)
例) 今日は正規表現を学びます。 正規表現を覚えると便利ですよ。 ビバ!正規表現 検索文字:[をは] 今日は正規表現を学びます。 正規表現を覚えると便利ですよ。 ビバ!正規表現
まぁこんな風に一文字を検索することは少ないと思いますが、カッコの中は範囲にできます。
[0-9]←[0123456789]←0,1,2,3,4,5,6,7,8,9
[A-Za-z]←[ABCDEFGH…XYZabcdefgh…xyz]←A~Z,a~z
[^0-9]←数字以外(先頭の^とは違います。先頭の数字以外を検索したいときは^[^0-9])
[0-9]←[0123456789]←分かりにくいですが全角の数字です。記号の”[]”と”-“は半角で書きます。
2桁の数字なら[0-9][0-9]って表すことが出来ます。数字は[0-9]って書くと言うのだけでも覚えておいてください。
[0-9][0-9]→00~99(2桁の数字)
[0-9][0-9][0-9]→000~999(3桁の数字)
例) 美里地区人口 年齢 男性 女性 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 検索文字:[0-9][0-9][0-9] 美里地区人口 年齢 男性 女性 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
3桁の数字が検索されました。
やってみよう) 例) 美里地区人口 年齢 男性 女性 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 検索文字:[0-9][0-9][0-9] 置換文字:3桁 やってみよう) 例) 美里地区人口 年齢 男性 女性 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 検索文字:[0-9][0-9][歳代] 置換文字:★
. とにかくなんでもいい1文字 (改行は除く)
.はオールマイティー。何にでもなってくれます。この記号はよく使います。
例) 今日はパソコンを学びます。 今日はけすことを学びます。 今日はfacebookを学びます。 検索文字:今日は....を学びます。 今日はパソコンを学びます。 今日はけすことを学びます。 今日はfacebookを学びます。
例の.は4つなので4文字って意味になります。オールマイティーなので、「今日は」と「を学びます」に はさまれた4文字のものは何でも検索されます。4文字を検索したので8文字の「facebook」は検索されませんでした(後々同じ話が出てくるので、検索されなかったことを覚えておいてください)
やってみよう) 例) 今日はパソコンを学びます。 今日はけすことを学びます。 今日はfacebookを学びます。 検索文字:今日は....を学びます。 置換文字:今日は( )を学びます。
{} 直前の文字の回数を指定
[0-9]{2} 2桁の数字([0-9][0-9]と一緒の意味です)
[A-Za-z]{2,} 2文字以上の英字
[0-9]{5,15} 5~15桁の数字
こんな風に回数を指定することができます。
数字はもちろんですが、先に挙げた.を使うことによって、○文字以上の行を検索とかもできます。
検索文字:^.{10,}
置換文字:
検索:”先頭(^)”から”何でも良い文字(.)”が”10以上({10,})”ある場合→置換:消す
これで1行が10文字以上ある行は消えます。
例) 美里地区人口 年齢 男性 女性 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 検索文字:[0-9]{2} 美里地区人口 年齢 男性 女性 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
これやと3桁の数字も2桁分引っかかっちゃいますね。2文字続く数字を検索したので間違ってはいないのですが、できれば2桁のものだけ引っかかって欲しいものです。そんな時はこれを使います。
\b 単語区切り 検索文字:\b[0-9]{2}\b 注:日本語の区切りには使えないことが多い(数字が全角とか、ひらがなと漢字の場合は区切られない) 美里地区人口 年齢 男性 女性 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
良い感じになりました。
やってみよう) 例) 美里地区人口 年齢 男性 女性 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 検索文字:[0-9]{2} 置換文字:■■ やってみよう) 例) 美里地区人口 年齢 男性 女性 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 検索文字:[0-9]{2,} 置換文字:■■★ やってみよう) 例) 美里地区人口 年齢 男性 女性 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 検索文字:\b[0-9]{2}\b 置換文字:■■
? 直前の文字があってもなくてもいい
ワープロとかやと、”表現のゆれ”とかで自動的に出てきたりしますよね。
例) コンピュータ コンピューター 検索文字:コンピューター? コンピュータ コンピューター やってみよう) 例) Windows 7のコンピュータを使っている Windows7のコンピューターを使っている 検索文字:Windows ?7 置換文字:Windows7 検索文字:コンピューター? 置換文字:コンピュータ
注意点
ここまで”.”やら”?”やら色んな記号が出てきたけど“.”って文字自身を検索したい場合はどうすりゃええんやろ?
そんな時は\を付けます。
例) 今日は....駄目だ 今日は腹ペコで駄目だ 検索文字:今日は....駄目だ$ 今日は....駄目だ 今日は腹ペコで駄目だ 検索文字:今日は\.\.\.\.駄目だ$ 今日は....駄目だ 今日は腹ペコで駄目だ
1つ目の例やと任意の4文字が検索されましたが、\.とすることによって”….”が検索されました。
他にも\?、\[,\\ …など、正規表現で使う記号の前に\を付けると目に見えてるほうの字が検索されます。
* 直前の文字があってもなくてもいいし、ずっと続いててもいい
「あっても」は想像できるけど、同時に無くても良いなんか検索すること無いよなぁと思いませんか?
最初僕もそう思ってましたが、他の記号を組み合わせることによってコレが結構便利に使えます。
例) あっ あたっ あたたっ あたたたたたっ あたたたたたたたたたたたたたたたたたたたたたたたたたっ 検索文字:あた*っ あっ あたっ あたたっ あたたたたたっ あたたたたたたたたたたたたたたたたたたたたたたたたたっ
全部引っかかる
まぁこんな風に「た」が”あっても無くても”なんて探すことはほとんど無いと思うのですが、個人的には”なんでも”の.と組み合わせて良く使います。
例えば、「ほげほげ」含んだ行を消したい場合。
例) ほげほげです。 いっつもほげほげです。 昨日はほげほげ
単に、
検索文字:ほげほげ
置換文字:★
やと、
★です。 いっつも★です。 昨日は★
となります。
次に、
検索文字:ほげほげ.*
置換文字:★
やと、
ほげほげです。 いっつもほげほげです。 昨日はほげほげ
と検索され、
★ いっつも★ 昨日は★
になります。
“ほげほげ”の後ろに文字があっても無くても検索されてますよね。
検索文字:.*ほげほげ.*
置換文字:★
★ ★ ★
こうする事によって、行頭や行末に「ほげほげ」がある場合など、”ほげほげ”の前後に文字があっても無くても、見つけることができ、行を消すことができます。
+ 直前の文字が1回以上
例) あっ あたっ あたたっ あたたたたたっ あたたたたたたたたたたたたたたたたたたたたたたたたたっ 検索文字:あた+っ あっ あたっ あたたっ あたたたたたっ あたたたたたたたたたたたたたたたたたたたたたたたたたっ
2行目から検索に合致する
1つ前と同様、例のように固定文字の連続を検索する事は少ないですが、最初に出てきた、[0-9]や”.”なんかと組み合わせると良い感じになります。
例) 今日はパソコンを学びます。 今日はけすことを学びます。 今日はfacebookを学びます。 検索文字:今日は.+を学びます。 今日はパソコンを学びます。 今日はけすことを学びます。 今日はfacebookを学びます。
上記”.”の時は4文字固定やったけど、これで8文字のfacebookも検索されるようになりました。
やってみよう) 例) あっ あたっ あたたっ あたたたたたっ あたたたたたたたたたたたたたたたたたたたたたたたたたっ 検索文字:あた*っ 置換文字:おまえはもう... やってみよう) 例) あっ あたっ あたたっ あたたたたたっ あたたたたたたたたたたたたたたたたたたたたたたたたたっ 検索文字:あた+っ 置換文字:おまえはもう... やってみよう) 例) 今日はパソコンを学びます。 今日はけすことを学びます。 今日はfacebookを学びます。 検索文字:今日は.+を学びます。 置換文字:今日は( )を学びます。 やってみよう) 例) 今日はパソコンを学びます。 今日はけすことを学びます。 今日はfacebookを学びます。 検索文字:.*けすこと.* 置換文字:★
注意点
*、+のあとにつける”?”
今日は津市美里町で講演です。美里町は津市の中でもちょっとだけ涼しいよ。
こんな文章があって、津市○○町(○○は何が入るか分からない)を検索したいなぁと思ったとき、
検索文字:津市.+町
ってしちゃうと、
今日は津市美里町で講演です。美里町は津市の中でもちょっとだけ涼しいよ。
となってしまいます。
正規表現では条件にあった物を一番長く検索しようとしますので、こんなときは、「よくばりでない」”?”(直前の文字があってもなくてもいい?と一緒やけど、ここでは違うということになってる)をつけてあげると直近のものに変わります。
今日は津市美里町で講演です。美里町は津市の中でもちょっとだけ涼しいよ。
検索文字:津市.+?町
今日は津市美里町で講演です。美里町は津市の中でもちょっとだけ涼しいよ。
() ひとくくりにする | 若しくは
あと2つで終わりです。もう少しだけ頑張ってください。
ここまで紹介した記号は1文字を対象にしたもんやったけど、これでひとくくりにできます。
例) ゴクゴク飲む ゴクゴクゴクっと飲む ゴクゴクゴクゴクっと飲む 検索文字:(ゴク)+ ゴクゴク飲む ゴクゴクゴクっと飲む ゴクゴクゴクゴクっと飲む
あんまりこんなことしないね…
例) 今日はパソコンを学びます。 今日はけすことを学びます。 今日はfacebookを学びます。 明日もパソコンを学びます。 検索文字:(パソコン|facebook)を学びます。 今日はパソコンを学びます。 今日はけすことを学びます。 今日はfacebookを学びます。 明日もパソコンを学びます。
複数の文字を一度に検索することができます。ブラウザで正規表現のプラグインとか入れるとこんな風に検索できたりします。
例) 今日はパソコンを学びます。 今日はけすことを学びます。 今日はfacebookを学びます。 明日もパソコンを学びます。 検索文字:(今日|明日)(は|も) 今日はパソコンを学びます。 今日はけすことを学びます。 今日はfacebookを学びます。 明日もパソコンを学びます。
今日は、今日も、明日は、明日も が検索されます。
結婚式などのイベントで色んな人が取ったデジカメデータをまとめなあかん…時とかあったりしますかね。
そんな時今回の記号が使えます。
例) IMG0001.jpg DSC0012.jpg R00034.jpg 検索文字:(IMG|DSC|R) 置換文字:KIP0820_
正規表現が使えるファイル名変更ソフトを使用すると、こんな風に複数メーカーのデジカメデータを統一するのに便利やったりします。
やってみよう) 例) 今日はパソコンを学びます。 今日はけすことを学びます。 今日はfacebookを学びます。 明日もパソコンを学びます。 検索文字:(今日|明日)(は|も) 置換文字:明後日は
() ,,… ひとくくりにした奴をおぼえる
これで最後。これは非常に便利です。
ここまで来たら正規表現本来の意味である「文章を記号で表現する」が何となく分かってくると思います。分かってきたらこの機能が凄く便利に使えます。
慣れるまでピンと来ないかもしれませんが、
1.検索したいキーワードを考える
2.それをカッコでくくる(保存される)
3.\数字で取り出すことができる
ってしてみて下さい。
例えば、
今日は晴れです。 今日は曇りです。 今日は雪です。
の天気の部分(晴れ、曇り、雪)を検索したい場合、
検索文字:今日は.+です。
と書くことができ(”今日は”と”です”挟まれた、任意の文字が一文字以上のもの)、
今日は晴れです。 今日は曇りです。 今日は雪です。
な風に検索されますよね。
これをカッコでくくると、.+の部分が置換時に\1って文字で使えるのです。
検索文字:今日は(.+)です。
置換文字:今日は\1です。\1は好きですよ。
今日は晴れです。晴れは好きですよ。 今日は曇りです。曇りは好きですよ。 今日は雪です。雪は好きですよ。
左から順に一つめにカッコをつけて検索された物が\1、その次にカッコをつけて検索された物が\2…という風に使えます。
たとえば列を入れ替えたり….
例) 美里地区人口 年齢 男性 女性 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(.+)\t(.+) 置換文字:\2 \3 \1 美里地区人口 男性 女性 年齢 125 115 00歳 158 159 10代 184 178 20代 201 181 30代 185 184 40代 261 280 50代 328 337 60代 225 303 70代 148 224 80代 18 56 90代
1つめの列が\1、2つめが\2として置換に使えるので、男性 女性 年齢の順に変わりました。
これならExcelの方が簡単にできるって?はい。Excelが便利ならExcelで良いと思います。適材適所で使っていきましょう。
間に何か はさんだり….
例) 郵便番号 0300846 5140000 6780250 6300134 9200273 9012114 検索文字:([0-9]{3})([0-9]{4}) 置換文字:\1-\2 030-0846 514-0000 678-0250 630-0134 920-0273 901-2114
こんな風に7桁の数字を3桁、4桁に別けることが出来ます。
一番最初に20120820を2012-08-20に変えたいって書いてあったの覚えてますか?
これを使ってできます。
検索文字:([0-9]{4})([0-9]{2})([0-9]{2})
置換文字:\1-\2-\3
2012→4桁の数字→([0-9]{4})
08→2桁の数字→([0-9]{2})
20→2桁の数字→([0-9]{2})
8月1日を8/1に変えるのも同様に、
検索文字:([0-9]{1,2})月([0-9]{1,2})日
置換文字:\1/\2
[0-9]{1,2}月→1桁か2桁の数字+月
[0-9]{1,2}日→1桁か2桁の数字+日
ってできますよね
やってみよう) 例) 美里地区人口 年齢 男性 女性 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(.+)\t(.+) 置換文字:\3\t\2\t\1 やってみよう) 例) 郵便番号 0300846 5140000 6780250 6300134 9200273 9012114 検索文字:([0-9]{3})([0-9]{4}) 置換文字:\1-\2
自己学習の為のサイトの紹介
文章読むより映像のが頭に入るとか、もう少し手を動かして身につけたいという方は下記のページがお勧めです。
■正規表現の基礎を動画で学ぶ
ドットインストール
http://dotinstall.com/lessons/basic_regexp
■正規表現をブラウザで試しながら学べる
手を動かしながら覚える正規表現<基礎入門編>
http://books.ivory.ne.jp/regexp/
手を動かしながら覚える正規表現<置換処理編>
http://books.ivory.ne.jp/regexp/replace.html
資料
正規表現の一覧表
http://www.textdrop.net/doc/regular-expressions-cheat-sheet-ja/
正規表現を使えるソフトの紹介
正規表現が使えるエディタ
Windows
秀丸エディタ(有料)
http://hide.maruo.co.jp/software/hidemaru.html
EmEditorFree
http://jp.emeditor.com/modules/download2/rewrite/tc_5.html
Mac
CotEditor
http://sourceforge.jp/projects/coteditor/
iText Express
http://itunes.apple.com/jp/app/itext-express/id416550249?mt=12
Android
Jota Text Editor
https://play.google.com/store/apps/details?id=jp.sblo.pandora.jota&hl=ja
iPhone
iText Pad(有料)
正規表現が使えるソフトやツール
Microsoft Word(ワイルドカード)
方言がきつい(今回紹介した機能はあるが、記号が違う)です。
http://office.microsoft.com/ja-jp/word-help/HA102350661.aspx
Adobe Bridge (画像管理ソフト/ファイル名の変換)
Excel用正規表現検索ダイアログアドイン
http://srcedit.pekori.jp/tool/excelre.html
Flexible Renamer (ファイル名の変換/Windows)
http://hp.vector.co.jp/authors/VA014830/FlexRena/
などなど…
まとめ
最初は苦いビールも飲み続けるとやめられんくなりますよって話
お仕事情報下さい
えー。最後に大事なこと!
もやし工房ではお仕事募集してます。フリーランスでサーバ管理の仕事がしたいけど、そんな需要が東海地方の何処にあるのかが分からない状態。こんな感じの講演して欲しいってのでも喜んで! 何やら話でも聞いてみたいってかたいらっしゃいましたら、是非 お便り下さい。よろしくお願いします。
コメント