正規表現を使った検索例 findstr (2/2)

findstr
前回に引き続き「findstr」コマンドの解説です。
今回は正規表現についてのもう少し詳細な説明と、 findstrと正規表現を使った検索例をいくつか掲載しようと思います。
正規表現はある程度使いこなせるようになれば、 非常に柔軟に文字列の検索や置換を行えるようになりますので、 覚えておいて損はないと思います。(置換については、このコマンドでは出てきません)
では今回も最後まで宜しくお願いいたします。

このページのトップへ
では早速ですが、以下はfindstrで使用する事のできる正規表現のメタキャラクタ一覧です。
前回も載せましたが、ここでもう一度確認しておいてください。
ちなみに、せっかく正規表現を取り上げるのだから、 正規表現のあれこれについても少しだけ詳しく説明しようかと思ったのですが、 findstrでは全ての正規表現の機能を使用できるというわけではないので、 正規表現についてはまた別の記事で書く事にし、ここでは検索の例だけをあげる事にします。
.     任意の1文字
*     直前の文字またはパターンを0回以上繰り返す
^     行の先頭にマッチする
$     行の終わりにマッチする
[class]  []内の文字の任意の1文字にマッチ
[^class]  []内の文字以外の任意の1文字にマッチ
[x-y]   指定した範囲内の任意の1文字にマッチ
¥x     特殊文字「x」をテキスト文字として扱う(エスケープ)
¥<xyz   xyzで始まる単語にマッチ
xyz¥>        xyzで終わる単語にマッチ
以上がfindstrで使用できるメタキャラクタとなります。
ここで注意しておきたいのが、よくファイル名を指定される時などに 使用される「*」。 これをワイルドカードと呼びますが、正規表現で使われる「*」と ワイルドカードの「*」は異なります。
ワイルドカードの「*」は 「任意の複数文字に一致(空文字含む)」という意味を持っていましたが、 正規表現の「*」では、 「直前の文字またはパターンを0回以上繰り返す」という意味を持ちます。
このページのトップへ
例えば・・
【ワイルドカードの*】
ab*c → abc abbbc abhjkmlc

【正規表現の*】
ab*c → ac abbbbc abbbbbbbc
このように上の正規表現の例「ab*c」では、*の直前の文字、 すなわち「b」を0回以上繰り返すパターンに一致します。 0回以上という事は0回も含むため、「ac」のように文字が存在しない場合もあります。
そのため、ワイルドカードでの「ab*c」と同じ働きをするパターンを 正規表現で表す場合には、 「ab.*c」としなくてはなりません。
正規表現では 「.」は任意の1文字(何でもよい1文字)を表し、 「*」は直前の文字またはパターンを0回以上繰り返すという意味を持つので、 「.*」と書くと任意の文字を0回以上繰り返す事になります。
【正規表現の.*】
ab.*c → abc abbbc abhjkmlc
「任意の文字(何でもよい1文字)が0回以上連続する」すなわち、 ワイルドカードで「*」を指定したのと同じという事になります。
このページのトップへ

他の文字も説明していきたい所ですが、一つ一つ取り上げていてはきりがないので、 早速findstrで正規表現を使った検索の例をあげてみましょう。
※正規表現の詳細については、また後日別の記事で解説する事にします。
ではまず例として、 「^」と「$」を使ってみます。
^     行の先頭にマッチする
$     行の終わりにマッチする
^」や「$」は、 行の先頭や行末に一致する文字列を検索する場合に使用します。
以下の例をご覧下さい。
サンプルファイルとしてfindstr.txtを使用しています。
findstr.txt
初心者でもわかるコマンドプロンプト

わかりやすいコマンドプロンプトの解説

コマンドプロンプトをつかってみよう

コマンドプロンプト
このページのトップへ
まずはじめに、コマンドプロンプトという文字列で始まる行を検索します。
なお、正規表現で検索する際には、 検索文字列を"(ダブルクォーテーション)で囲む必要があります。
findstr 正規表現を使った検索例
C:¥sample>findstr "^コマンドプロンプト" findstr.txt
findstrに続き、「^コマンドプロンプト」と記述する事で コマンドプロンプトという文字列で始まる行を検索する事ができます。
このように、行頭にのみ存在する文字列を検索したい時には「^」を使用します。
findstr 正規表現を使った検索例
結果、このように検索されました。
コマンドプロンプトをつかってみよう
コマンドプロンプト
このページのトップへ

次は「$」です。 もう説明するまでもないと思いますので、簡単に流します。
findstr 正規表現を使った検索例
C:¥sample>findstr "コマンドプロンプト$" findstr.txt
findstr 正規表現を使った検索例
初心者でもわかるコマンドプロンプト
コマンドプロンプト
このように、行末にのみ存在する文字列を検索する場合は、 検索文字列の後に「$」を記述して下さい。
このページのトップへ

ではコマンドプロンプトという文字列のみが存在する行を検索するにはどうすればよいでしょうか。
(「コマンドプロンプト」以外の文字は一切書かれていない)
findstr 正規表現を使った検索例
C:¥sample>findstr "^コマンドプロンプト$" findstr.txt
検索文字列のみが記述された行を検索するには、検索する文字列の行頭と行末にそれぞれ^$を記述します。
findstr 正規表現を使った検索例
コマンドプロンプト
このページのトップへ

次は比較的良く使われる検索パターンの例をあげてみます。
サンプルファイルとして、以下のfindstr2.txtを使用します。
findstr2.txt
1.コマンドプロンプトとは

a.利点
b.規則
c.環境

2.コマンドプロンプトの基礎
3.コマンドプロンプトの機能
4.コマンドプロンプトの応用

a.バッチファイル
b.付録
このページのトップへ
このfindstr2.txtから先頭が数字で始まる行を、正規表現を使って検索します。
findstr 正規表現を使った検索例
C:¥sample>findstr "^[0-9]" findstr2.txt
このコマンドライン上で指定した^[0-9][0-9]は、指定した範囲の中の一文字に一致するかどうかという事を意味します。
ここでは0-9と記述されているので、
ファイルの中に0から9までの数字が存在するかどうかを検索します。
一方「^」は行の先頭を意味するので、 ^[0-9]を検索するという事は、 行頭に数字が存在する行を対象ファイルの中から検索するという事になります。
このページのトップへ
以下、実行結果です。
findstr 正規表現を使った検索例
1.コマンドプロンプトとは
2.コマンドプロンプトの基礎
3.コマンドプロンプトの機能
4.コマンドプロンプトの応用
この上記の正規表現パターンと同様に、^[a-z]を 検索文字列として指定すれば、英小文字のいずれかが頭に来る行を検索する事も出来ます。
findstr 正規表現を使った検索例
C:¥sample>findstr "^[a-z]" findstr2.txt
a.利点
b.規則
c.環境
a.バッチファイル
b.付録
このページのトップへ

その他の正規表現の例としては・・
ab[^cd]
[^cd]は、cd以外の任意の一文字に一致します。
abcabd以外の文字に一致。 abeabhなどはOK。
[Cc]ommand
[Cc]は、Cもしくはcのどちらにも一致します。
CommandcommandのどちらでもOK。
¥[file¥]
¥[file¥]は、[file]に一致。
¥を特殊文字の前に記述する事で、特殊文字を通常のテキストとして扱います。
¥<abcde¥>
¥<abcde¥>は、abcdeという単語のみに一致。
単語の途中にこの文字がある場合は一致しません。
¥<abcdeでは、abcdeで始まる単語に一致します。 またabcde¥>では、abcdeで終わる単語にマッチします。 上記の¥<abcde¥>はこの2つを組み合わせたものです。
このページのトップへ

findstrとこのコマンドで利用する事のできる正規表現の解説については以上となります。
findstrでは使用できる正規表現の機能に限りがあるので、 何でもかんでもできるというわけではないのですが、 正規表現を使っての検索は、通常の検索よりも何倍も便利だという事をわかっていただけたかと思います。
※文中に何度も書きましたが、正規表現についてはまた後日別記事でまとめるつもりです。
ではまた次回、宜しくお願い致します。
このページのトップへ
ヌル(null/空文字)とは
正規表現とは

※キーマンズネットのIT単語帳ページへ飛びます。
様々なIT専門用語の意味を詳しく知る事ができます。
サイト上の情報利用により生じた損害等には一切責任を持ちません
2009.09.30 Wednesday | 初心者でも簡単コマンドプロンプト | comments(0) | trackbacks(0) | 記事URL
▲PAGETOP
同カテゴリーの記事 最新5件
Comment:
Add a comment:











※コメントは管理者が承認後表示されます。
Trackback:
http://shop.denkaseihin.com/trackback/589
※記事と関連性が低い等、管理人が不適当と判断したものについては削除させて頂きます。
新着記事
CATEGORY
まめ知識
COMMENT
  • 巨大なサイズのファイルも一瞬で削除出来るコマンド del
    denkaseihin (04/15)
  • 巨大なサイズのファイルも一瞬で削除出来るコマンド del
    原田 (04/14)
  • HPの h8-1080jpレビュー 内蔵GPU〜GTX580まで可のSandy Bridge搭載マシン
    denkaseihin (09/18)
  • HPの h8-1080jpレビュー 内蔵GPU〜GTX580まで可のSandy Bridge搭載マシン
    ヨーイチ (09/18)
  • HPの h8-1080jpレビュー 内蔵GPU〜GTX580まで可のSandy Bridge搭載マシン
    denkaseihin (09/14)
  • HPの h8-1080jpレビュー 内蔵GPU〜GTX580まで可のSandy Bridge搭載マシン
    MN (09/13)
  • Firefoxでcookieが保存されないという現象が発生したら
    denkaseihin (10/28)
  • Firefoxでcookieが保存されないという現象が発生したら
    KEKE (10/27)
SMTWTFS
      1
2345678
9101112131415
16171819202122
23242526272829
30      
<< June 2019 >>
RSS
ARCHIVES
MOBILE
qrcode
LINK

Copyright © 2005 - denkaseihin. All Rights Reserved.