とまと あんらいぷ…

エンジニアの活動記録とかつぶやきとか

GitHub
スポンサードリンク

【.NET】正規表現を使って検索しマッチした文字列を吐き出す【調査用】

テキストファイルから小難しい検索や置換を行う場合、
正規表現を使ってこねくり回してるわけです。

そうして出てきた結果をExcelなぞに貼り付けてフィルタリングしたり
内容を精査したり・・・
現場ではよくある話でしょう。(たぶん)

正規表現に慣れてきたといえど、指定したパターンとはかけ離れた
想定外の文字列の並びがあったり、
正規表現エンジンが違ったりして使い方に戸惑ったりしていると
一発で置換できなかったりしてモヤモヤとする時間を過ごすハメになります。
最終的に途中で手順がよく分からなくなって、結局手作業で行うことに・・・

はい。本日陥りました。
というわけで、またまたC#で作成したソースコードを保持っと。


githubに乗せるつもりだったけど、コンパイルしないと使えないんじゃあ
まだ未完成ということで、exe単品では使えず、コンパイル時に定数を設定して使う形になるけど
プログラマさんなら問題ないよね。

◆用意するもの
1.入力ファイル

◆動き
1.出来上がったexeにファイルをドラッグ&ドロップして使うか、Visual Studioのデバッグ時コマンドラインにファイルパスを指定。

2.コードに設定した定数の通り動きます。

3.入力ファイル名+_Reviewedっていうファイル名に結果ができあがります。

◆結果ファイルの中身
1.コードに設定した正規表現パターンに一致する文字列を改行区切りで抽出します。

◆コードの設定方法は以下の通り。
_FileEncoding = "Shift_JIS";
1.エンコードを指定してください。

_MatchingPattern = "E[0-9]{5,}";
2.正規表現でマッチさせるパターンを指定(ここが一番大事)

_AllowDuplicateChars = false;
3.falseに設定すると出力ファイル内に重複した抽出結果がでなくなります。

◆ソースコード


今回はこんなテキストを放り込んでテスト結果確認しました。
・入力ファイル
MessageBox.Show("E00001")
MessageBox.Show("E00002")
MessageBox.Show("E00003")ShowMessage("E00101")

出力ファイル
E00001
E00002
E00003
ぶっちゃけた話、きちんとしたパターンテストなんてしてないし、
_AllowDuplicateChars のif分岐部分が気に入ってないのですが(誰か綺麗に書く分岐教えて!)
時々ファイルぶちこんで正規表現でこねた後に内容をファイル出力したいなぁ
という場合のテンプレートにでもなればよいかな。


そういえば、「置換」という言葉を何度も使ってるけど
してはいけないチカンという漢字が紛れていないかとても心配です。
▼この記事を読んだ方は、こんな記事も読んでいます。▼

スポンサードリンク

テーマ:プログラミング - ジャンル:コンピュータ

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://dalmore.blog7.fc2.com/tb.php/48-fd11349a
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad