ワード検索野郎は、Microsoft Wordファイルを正規表現検索できるタブ型Word Grepツールです。
Word97-2003についてはバイナリファイルを直接解析しているためWordがインストールされていなくとも検索できます。他に、標準でWindowsテキスト、HTML、PDF(Ver1.2-1.4)、リッチテキストファイルも検索できます。タブ型なので連続して検索してそれぞれの結果を残すことができます。
Wordを使った大学生のための論文作成術 (佐良木 昌 (著))でも本ソフトの活用方法が紹介されています。
主な機能は以下の通りです。
- 指定フォルダ内のWord、テキスト、HTMLファイルGREP検索(正規表現も使用可能)
- GREP検索結果からWordファイルの該当個所までの直接ジャンプ
- Word文書の属性閲覧
- 全角、半角文字数(英大文字、英小文字、数字、記号、カタカナ)カウント及び指定外文字混入のチェック*1
*1: 半角シンボル(ギリシャ文字などASCII以外の文字は正しくカウントできない場合があります)。詳しくは未解決問題を参照。
*2: Word2003より後のWordファイルは検索できません
動作環境
以下の環境で動作確認しています。
- Windows2000/XP(Vista/7では未確認)
インストール
wordyaro.zipを
ダウンロードし、通常の手続きで解凍すると
- wordyaro.exe (プログラム本体)
- wordyaro.htm (このファイル)
- pdftool.dll
- rtfconv.dll
- mbctbl.dll
- sbctbl.dll
- rtfconv.lib
- nkf32.dll
- bregexp.dll
が出来ます。
アンインストール
- インストールしたフォルダにあるすべてのファイルおよびtempfolフォルダを削除します。
使用方法
起動
GREP検索
- 新規検索ボタンの横にキーワードを入れる。正規表現を使用したい場合[az]ボタンを押した状態で正規表現を入力する(正規表現を使用した場合、Word文書の該当箇所へのジャンプはできない)
- フォルダーマークボタンを押して検索したいフォルダーを指定する(複数指定可能)。
- 新規検索ボタンを押す(追加検索ボタンを押せば別のタブに検索結果を表示)
- キーワードが含まれるファイルのリストが表示される。
- リストをクリックするとプレビュー画面に文書が表示される
拡張検索(ワードファイル限定)
- フォルダーマークボタンを押して検索したいフォルダーを指定する。
- ツール→拡張検索を選ぶ
- タイトル、作成日時などのワードファイルの属性や、全角カタカナ、半角英小文字など文書に含まれている文字種など、文書の検索条件を指定する。
- 検索ボタンを押す
ファイルオープン
- フォルダーマークボタンを押して検索したいフォルダーを指定する。
- フォルダーに含まれるファイルのリストが表示される。
- リストをクリックするとプレビュー画面に文書が表示される
- リストをマウスの右ボタンでクリックし、メニューを選ぶと,Word文書を開ける
(同じ操作は、ファイル→フォルダーを開く でもできる。)
ファイル一括変換
- フォルダーマークボタンを押して検索したいフォルダーを指定する。
- ファイル→一括変換を選択する
- 変換したテキストファイルを保存するフォルダーを指定する。
文字数・文書属性表示
検索結果リストから属性や文字数を見たいファイルをクリックすると、右下に表示される。文書属性はWord97-2003でファイル→プロパティで表示されるものと同じ。文字数は全角及び半角文字の英大文字、英小文字、数字、記号、カタカナの数を個別に表示できる。半角カタカナの混入、全角記号・全角英字の使用などを簡易チェックできる。但し、シンボル文字については未解決問題あり。文字数表示と文書属性表示は表示→文字情報(文書情報)で切り替える。
その他の機能
検索結果リストをマウスの右ボタンでクリックすると、以下のメニューを選ぶことできる。
- コピー: 指定情報をコピー
- リポジトリにコピー:リポジトリに検索結果を移動
- テキストエディタで起動:テキストファイルとして開く
- 関連アプリから起動:文書を関連付けしたアプリで開く
- Wordから起動後、検索位置まで移動:Word文書を開いてから、マッチした個所まで移動
- ファイルをコピー:選択したファイルをコピーする
- ファイルを削除:選択したファイルを削除する
- ファイルを移動:選択したファイルを移動する
プレビュー画面をマウスの右ボタンでクリックすると、以下のメニューを選ぶことできる。
- コピー: そのまま
- キーワードにコピー:選択文字をキーワードに入れる
- 検索:プレビュー画面内を検索
リポジトリに入れた検索結果はツリー表示され、以下の操作が可能となる。
- 選択項目をコピー:そのまま
- 全体をコピー:検索結果全体をコピー
- 削除:1項目削除
- 全削除:全保存結果を削除
表示メニューで文書情報、プレビュー画面の表示・非表示、プレビュー画面のフォント、リスト表示での先端部分表示/終端部分表示を変更できる。また開いたタブを一括で閉じることができる。
オプション
検索オプション
- 大文字・小文字を区別する:キーワードの大文字小文字を区別します。
- 全角・半角を区別する:キーワードの大文字小文字を区別。但しシンボル文字については未解決問題あり。
- サブフォルダも検索する:指定フォルダのサブフォルダも検索。ツールバーからも指定できます)
- ファイル日付:作成、更新、アクセスの日付を以前、以降で指定できる。
動作オプション
- 起動時にフォルダーを開く:起動時に通常のファイルオープンダイアログのようにフォルダー(その下のテキストボックスで指定)のファイル内容を表示。
- 履歴削除:過去に指定したフォルダー、キーワードを削除。
- フォント:プレビュー画面のフォントを設定
- 検索対象ファイルタイプ:doc, pdf, txt, htm, rtfの各ファイルを検索対象とするならチェック。
- 正規表現:Awk準拠正規表現( Bmonkey氏の正規表現を使った文字列探索/操作コンポーネント集)とPerl5準拠正規表現(Baba Tatsuo氏のBregexp.dll仕様)から選択できます。
- 最初のヒットのみ表示:1ファイルで複数ヒットがあった場合最初のヒットのみ表示。
Awk準拠正規表現(Bmonkey氏Regexpコンポのヘルプより転載)
- 文字そのもの。
メタキャラクタ以外の文字は通常の文字を表します。
abc 文字列 'abc' にマッチします。
- '\'によるメタキャラクタの意味打ち消し。
\+, \|, \\ それぞれ文字'+', '|', '\' にマッチします。
- '\'によるエスケープシーケンス。
エスケープシーケンス 意味 対応するキャラクターコード
\b Back space $08
\r Carriage return $0A
\n Line feed $0D
\t Tab $09
\xhhhh hは16進数。1~4桁まで、2バイト文字も指定可能
\oooooo oは8進数。 1~6桁まで、2バイト文字も指定可能。
- '.'によって任意の一文字(2バイト文字含む)を表す。
※ 復帰(CR)$0d、改行(LF)$0a にはマッチしません。
例
正規表現 'a.b' は、 'aab', 'azb', 'abb', 'a全b' ... などにマッチします。
- 文頭を表すメタキャラクタ '^'
検索対象テキストの文頭にマッチします。
※1文字目のキャラクタを表す位置以外では、通常のキャラクタ'^'として扱われます。
例 ○ ^abc 文頭の'abc'にマッチします。
○ '(xyz|^ABC)' 'xyz'または、文頭の'ABC'にマッチします。
× 'A^BC 'A^BC'にマッチします。文頭を表すメタキャラクタとしては解釈されません。
- 文尾を表すメタキャラクタ '$'
検索対象テキストの文尾にマッチします。
※最後尾のキャラクタを表す位置以外では、通常のキャラクタ'$'
として扱われます。
例 ○ abc$ 文尾の'abc'にマッチします。
○ '(xyz$|^ABC)' 文尾の'xyz'または、文頭の'ABC'にマッチします。
× 'A$BC 'A$BC'にマッチします。文尾を表すメタキャラクタとしては解釈されません。
- キャラクタクラス
'[' と ']'に挟まれた文字のどれか1文字にマッチします。
[abc] 'a' 又は 'b' 又は 'c' にマッチします。
'-'による範囲指定も可能です。
[0-90-9] 半角、全角の数字1文字にマッチします。
- 補キャラクタクラス
'[' と ']'に挟まれた文字以外の文字1字にマッチします。
[^いろは] 'い', 'ろ', 'は' 以外の1文字にマッチします。
'-'による範囲指定も可能です。
[^a-zA-Z] 半角アルファベット以外の一文字にマッチします。
※ キャラクタクラスの中では、'['の次の'^', メタキャラクタ '\', 範囲指定の '-'以外の文字は文字そのものとして扱われる。
[.()\\^] 文字 '.', '(', ')', '\', '^' のどれか一文字にマッ
チします。
※ キャラクタクラスの中で両側にキャラクタの無い'-'は文字そのものとして
扱われます。
[+-] 文字 '+', '-' のどちらか1つにマッチします。
[-+] 同上
- 連結 Concatonation
XY 連続している正規表現XYにマッチします。
- 選択 Union
X|Y 正規表現 X 又は 正規表現 Y にマッチします。
- 0回以上の繰り返し(閉包)Closure
X* a* は '', 'a', 'aa', 'aaa', ... にマッチします。
- 1回以上の繰り返し (正閉包)Positive Closure
X+ a+ は 'a', 'aa', 'aaa', 'aaaa', ... にマッチします。
- 「ある」か「ない」かの指定
X? a? は '', 'a' にマッチします。
- 括弧による解釈の優先順位指定
(X) (abc)+ は 'abc', 'abcabc', ... にマッチします。
- ヌル正規表現
() (X|) は X?と等価の意味を持つ。
Perl準拠正規表現(Bregexp.dllヘルプより抜粋)
- パターンについて
正規表現は、文字列をパターンとして処理します。パターンは、次のように"/"で囲んで指定します。
- /パターン/修飾子
パターン文字に"/"を含む場合は、次のようにmを指定して別の文字を使うことができます。
- m#パターン#修飾子
パターンの中にはメタ文字という特別の意味を持つ文字があります。このメタ文字をマスターすると正規表現のパワーを実感できます。
BREGEXP.DLLで使えるメタ文字とその意味は、Perl5とほぼ同じです。従ってPerl5での正規表現をそのままBREGEXP.DLLのパ
ターンとして使えます。次にBREGEXP.DLLで使えるメタ文字を示します。
\ 次のメタ文字をクォートする(取り消す)
^ 行の最初にマッチする
. (改行以外の) すべての文字にマッチする
$ 行の終わりにマッチする
| 選択
() グループ化
[] 文字クラス
\w 単語」の構成文字 (英数字と "_") にマッチ
\W 単語の構成文字以外にマッチ
\s 空白文字にマッチ
\S 空白文字以外にマッチ
\d 数字にマッチ
\D 数字以外にマッチ
\b 単語の境界にマッチ
\B 単語の境界以外にマッチ
\A 文字列の最初にのみマッチ
\Z 文字列の最後にのみマッチ
\t タブ
\n 改行
\r 復帰
\f 改ページ
\a アラーム (ベル)
\e エスケープ
\033 8 進数で表した文字
\x1b 16 進数で表した文字
\c[ コントロール文字
直前の文字の数量子:
* 0 回以上にマッチ
+ 1 回以上にマッチ
? 1 回または 0 回にマッチ
{n} ちょうど n 回にマッチ
{n,} n 回以上にマッチ
{n,m} n 回以上 m 回以下にマッチ
- Times New
Roman/Arialなどの英字フォントの英数字以外の文字(α、βなどのギリシャ文字や±、≦記号)などは全角文字と認識されます。このため検索オプ
ションの「全角半角を区別」でαやβを指定した場合、全角・半角ともマッチします。文字数カウントについても同様でαやβは「その他の全角文字」としてカ
ウントされます。
- SymbolやWingdingsなどのシンボル専用の文字は正しく検索、表示、テキスト変換できません(もともとテキスト変換した時に対応する文字もない)。
- ツール→オプション→高速保存にチェックが入っているとすべてのテキストが取得できない場合があります(編集、追加のあった部分がファイルの不連続領域に書き込まれるため。Wordで「名前をつけて保存」し直せば検索できます)
- プレビュー画面でキーワードの位置を正しく特定できない場合がある。
- 一部の特殊な作り方をしたWordファイルは検索でヒットしない場合がある。
- 一部のPDFファイルは検索するとエラーになる(原因調査中)。
注意事項
- このソフトウェアを使用して如何なる被害が生じても作者は一切責任を負いません。
- すべての環境でテストしたわけではありませんので、あなたの環境で動作する保証は有りません
- このソフトウェアの著作権はSATOS601に帰属します。
- このソフトウェアはフリーウェアです
- 商用(社内でのみ)利用可能です。
謝辞
本ソフトウェア作成にあたり以下のライブラリを使用させていただきました。
- pdftool.dll (Papy氏)
- RTFCONV.DLL, SBCTBL.DLL, MBCTBL.DLL(針谷壮一氏)*
- TFindFile (Masahito Inoue氏)
- Extrichedit (Hidemi Oya氏)
- 正規表現を使った文字列探索/操作コンポーネント集 (BMonkey氏)
- TShelltree (Jan Peter Stotz)
- nkf32.dll (武藤 健志氏)
- NKF32.PAS Ver.1.0 (c)1996 A.Nakata
- bregexp.dll (Baba Tatsuo氏)
- Mustangpeak EasyListview(mustangpeak.net)
Wordバイナリファイルの解析にあたり以下の資料を参考にさせていだだきました。
- Microsoft Word 97 Binary File Format(http://www.redbrick.dcu.ie/~bob/Tech/wword8.html)
- ReadDoc (Masahito Inoue氏)
*rtfconv.dllの著作権は針谷壮一にあります。rtfconvのオリジナルの入手先は(http://www5b.biglobe.ne.jp/~harigaya/)です。
更新履歴
Ver0.10 初版完成
Ver0.101 検索文字をワードから引き継ぐ機能を削除
Ver0.20 文字数カウント、検索文字の正規表現対応サポート
Ver0.30 拡張検索サポート、ファイルコピー・移動・削除メニュー
Ver0.31 終端部分表示メニューを追加
Ver0.50 フォルダーの複数指定を可能にした。オプション画面を変更。検索フォルダーとキーワードを指定するボックス位置の入れ替え。サイズ変更した際のリストビュー画面再描画不具合修正。
Ver0.60 使用中文書があるとエラーが出るバグを修正。リポジトリの検索機能を削除。複数フォルダーの指定を可能にした。
Ver0.70 TXT,HTMLファイルの検索を可能にした。
Ver0.71 PDFVer1.2-1.4対応
Ver0.80 リッチテキスト対応
Ver0.81 テキスト検索時にJIS,EUC,UNICOCDEにも対応
Ver0.82 Bregexp.dllによる正規表現対応。
Ver0.92 保存、文書情報表示のバグ修正
Ver0.93 1ファイルで複数ヒットがあった場合最初のヒットのみ表示するオプション追加
Ver0.94 文書ファイルのアイコンをリストに表示。リストコントロールの変更。プレビューサイズ上限設定。
Ver0.95 表示関係の改善
Ver0.96 関連アプリで起動が機能しなかったのを修正。拡張子なしでも開くオプションを追加
Ver0.97 タブ型に変更し、検索結果を残せるようにした。リポジトリー機能を廃止