home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1996 February
/
VPR9602A.ISO
/
ols
/
winnt
/
archive
/
hmnt153.lzh
/
README.JRE
< prev
next >
Wrap
Text File
|
1995-04-18
|
14KB
|
374 lines
JRE.DLLバージョン1.12 説明書
Copyright (C) 1992,93,94,95 Yamada Kazuo
April 17th,1995 山田和夫(SGQ02500)
■ JRE.DLLについて
JRE.DLLはアプリケーションから呼び出すことにより正規表現検索,あいま
い検索を実現するためのダイナミックリンクライブラリ(DLL)です。DLLという
ソフトウェアの性格上,単独では役に立ちませんが,これをサポートするアプ
リケーションがこのDLLを呼び出すことによって目的の機能を使用することが
できます。したがって,このJRE.DLLは他のアプリケーションとセットになって
配布されるされることがあります。
● 問い合わせ,サポートについて
このDLLのサポートはNIFTY-Serve WINDOWSフォーラムFで行います。このDLL
により提供される機能,つまり「正規表現検索」および「あいまい検索」に関する
質問,要望などはNIFTY-ServeのWINDOWSフォーラムで発言してください。主と
なるアプリケーションがDLLを呼び出している都合上,そのいずれに起因して
いるかがはっきりしないトラブルもあります。このような場合はフォーラムで
していただくのがもっとも効果的です。
とくに作者への問い合わせのメールはご遠慮ください。これは,トラブルの
情報は他のユーザーにとっても有益ですし,メールではメールボックスがパン
クする可能性もあるからです。他人の目に触れると都合の悪い場合を除き,会
議室に書き込むようにしてください。
もし,このDLLの機能についてどうしてもメールで問い合わせたい場合は,作
者の山田和夫(NIFTY-Serve:SGQ02500)にメールしてください。
注意:
jre.dllには自己診断機能があります。これは主にウィルス対策を目的とし
て組み込んであります。この機能ではスタティックなウィルスしか検出で
きませんが,環境保全に役立ててください。このdllを使うアプリケーショ
ンでは,何らかの手段でこのdllのバージョンを知ることができますが,バ
ージョン0.00が表示されている場合は,自己診断機能でエラーを検出して
いるケースです。速やかにうろたえてください。あるいは作者にご相談く
ださい。
● 拡張テーブルエディタについて
このDLLではあいまい検索機能をサポートしますが,単体では全角文字と半
角文字を区別せずに検索するだけの機能であいまい度20%くらいです。この程
度のあいまいさでは気に入らないという方のために拡張テーブルエディタが
あります。このエディタを使えば,あいまい度93%くらいまでは自由にあいまい
検索を実施することができます。
ただし拡張テーブルエディタはあくまでもエディタなので,必要に応じてあ
いまいテーブルをカスタマイズの必要があります。
拡張テーブルのカスタマイズは次のような検索に効果的です。
1) 半角と全角,さらに大文字と小文字を区別せず検索したい場合
例えば「windows」で検索したとき「WINDOWS」にもマッチさせたい
2) 口語を含む文章を検索,または口語を検索したい場合
例えば「ドッヒャー」で検索した場合「どっひゃ~」にもマッチさせたい
3) 旧字と正字を区別せず検索したい場合
例えば「恵」で検索した場合「惠」にもマッチさせたい
4) 誤用も含めて検索したい場合
例えば「うなずく」で検索した場合「うなづく」にもマッチさせたい
5) 特定の人名と愛称,ハンドル名などを区別せず検索したい場合
例えば「山田」で検索した場合「山田っち」にも「SGQ02500」にもマッチさ
せたい
6) なんらかの理由で関係のない文字列をとにかく同一視したい
例えば「おまえアホか」で検索した場合「やかましい,ほっとけよ」にもマ
ッチさせたい
以上のように各種とことんあいまい方式を実現できます。また,ここにあげ
た例はすべて逆の検索にも有効です。
押し付けの機能では物足りない方は拡張テーブルエディタをご利用くださ
い。このエディタはNIFTY-ServeのWindowsフォーラムにあります。
ただし,このエディタはシェアウェアとさせていただきます。高度なあいま
い検索機能を使用する代金とお考えください(JRE.DLLそのものはフリーソフ
トです)。また,サポートはNIFTY-Serveのみとさせていただきます。詳しくは,
拡張テーブルエディタのドキュメントをご覧ください。
● 免責など
とくに致命的なトラブルは起こらないよう留意しましたが,このソフトウェ
アによってユーザーに不利益を及ぼした場合,作者はその責任を負いかねます。
明らかに不具合がある場合はもちろん可能なかぎり誠意的に対処いたします
が,コンピュータ上での作業にはデータ紛失の危険性が常につきまといます。
これは本ソフトウェアに限った話ではありませんが,できるだけこまめにバッ
クアップを作成するようにしてください。
また,このDLLは単独での再配布を禁止します。先に述べた理由でなんらかの
アプリケーションに付属した形で入手されていることと思います。再配布に関
しては主となるアプリケーションの配布条件に準じます。
■ このDLLで使用可能なメタキャラクタ,エスケープシークェンス
以下のメタキャラクタが使用できます。
[] キャラクタクラス.
() パターンをグループ化する.
^ 行頭.
$ 行末.
. 改行を除く任意の1文字.
* 直前のパターンの0回以上の繰り返し.
+ 直前のパターンの1回以上の繰り返し.
? 直前のパターンが0回または1回現われる.
| パターンの論理和.
キャラクタクラスの要素に「\」や「]」を含める場合は「\」でエスケープしてく
ださい。キャラクタクラスの中では,メタキャラクタは機能しません。また,以
下のエスケープシークェンスが使用できます。
\ooo oに8進数で文字コードを指定する.oは1~3桁.
\xhh hに16進数で文字コードを指定する.hは1~2桁.
\a ベル.
\b バックスペース.
\n ニューライン.
\r キャリッジリターン.
\t 水平タブコード.
\v 垂直タブコード.
\f フォームフィード.
\e エスケープコード.
\z エンドオブファイル(EOF).ただしサポートしているアプリのみ.
\< 英単語の始まり.
\> 英単語の終わり.
\w 英単語.
\oooと\xhh以外のエスケープシークェンスで表現できないコントロールコ
ード(文字コード32未満のキャラクタ)は検索できません。\oooや\xhhで指定し
ても検索はうまくいきません。
■ 正規表現について
正規表現はテキストを処理(主に検索)する時に非常に便利ですので,是非覚
えましょう。正規表現の主な目的は,次の2点を特定するためにあるといえます。
1) ある行の中に,ある文字が含まれているか
2) その文字が,行のどこにあるか
1)の,ある文字が含まれているかを調べるのに,もっとも基本的な方法はそ
の文字自身を用いて検索することです。例えば,このファイルの中に「基本」と
いう文字が含まれているかを調べるときは,「基本」という文字列で検索すれば
良いのですが,もし「基本」または「基礎」という文字列を検索したい場合はどう
するのでしょう?
ここで2)の,行のどこに含まれているかを指定します。この例では「基」の次
に「本」か「礎」がある行を探すわけです。このように複雑な検索を一度に行いた
い場合は正規表現の独擅場です。
上記メタキャラクタの各機能を簡単に説明します。メタキャラクタはすべて
半角文字です。
● [] キャラクタクラス.
DOSのファイル名を指定する方法にワイルドカードがありますが,キャラク
タクラスはワイルドカードをより賢くしたものです。ブラケット(角括弧)で囲
んだ文字のいずれかひとつとマッチすればマッチしたと判断します。さきほど
の例で「基本」または「基礎」を検索する場合は次のように指定します。
基[本礎]
キャラクタクラスには複数の文字が指定できます。
基[本礎地]
また,「ある文字コードからある文字コードまで」というように範囲指定する
ことも可能です。例えば「No1」,「No2」,「No3」……というような「No」のあとに数
字が現われるパターンを検索したい場合は次のように表現します。
No[0-9]
数字は0から始まることに注意してください。1から0ではありません。また,
ブラケットの直後,または閉じるブラケットの直前にあるマイナス記号は範囲
指定と見なしません。
また,キャラクタクラスでは「^」(カレット)によって否定をすることができ
ます。さきほどの例では,
基[本礎]
で,「基という文字のあとに,本という文字,または礎という文字」が並んでいる
文字列を検索しましたが,否定することにより「基という文字のあとが,本とい
う文字ではなく,かつ礎という文字でもない」文字列を検索することができま
す。例えば,
基[^本礎]
とすることにより,「基本」や「基礎」にはマッチせず,「基地」にはマッチするよ
うになります。
さきほど,[0-9]で数値(正確には半角0~半角9までの文字コード)を指定し
ましたが,範囲指定と否定を組み合わせることにより,その範囲を否定するこ
ともできます。
No[0-9][^0-9]
こうすると「No」のあとにひと桁の数字が現われる文字列を検索することが
できます。ただし,キャラクタクラスでカレットが否定を意味するのは角括弧
の直後にカレットがある場合だけです。
[a-z^0-9]
このように表現すると,半角の小文字アルファベットとカレットと半角の数
字にマッチします。
なお,キャラクタクラスの中にあるメタキャラクタは,メタキャラクタとし
ての意味はもちません。文字そのものとして扱います。ただし,キャラクタクラ
スのなかに円記号や閉じるブラケットを含ませる場合は,円記号でエスケープ
する必要があります。
● | パターンの論理和.
パターンの論理和とは,「この文字列かこの文字列」を探したいという場合に
使います。さきほどのキャラクタクラスでは「この文字かこの文字」を探すこと
しかできないことに注意してください。つまり,複数の候補文字列がある場合
に使用します。例えば,テキストの中から「THE WINDOWS」か「Windows Magazine」
を探したい場合,次のように表現します。
THE WINDOWS|Windows Magazine
こうすることで複数の文字列が一度に探せます。
なお,このパターンの論理和は次に説明するパーレン(まる括弧)と組み合わ
せて使うと効果的です。例えば「日本電気」と「日電本気」を一度に検索したい場
合は次のように表現します。
日(電本|本電)気
● () パターンをグループ化する.
パターンをグループ化して評価します。優先順位が高くなるので,パーレン
の中を評価した後に全体を評価します。正規表現に詳しい方ならパーレンによ
ってパターン保存ができることをご存知だと思いますが,現バージョンではデ
ータ構造の都合で,そこまではできませんでした。ごめんなさい。
● ^ 行頭.
カレットは行頭を意味します。例えば次のようなパターンでは行頭に半角数
字があること行を検索します。
^[0-9]
● $ 行末.
ドル記号は行末を意味します。例えば次のようなパターンでは,半角まる(。)
で終わっている行を検索します。
。$
● . 改行を除く任意の1文字.
ピリオドは改行を除く任意の1文字を意味します。DOSのワイルドカードでの
疑問符と同様の働きをします。ここでいう改行とは「\r」または「\n」です。
● * 直前のパターンの0回以上の繰り返し.
直前にある正規表現の0回以上の繰り返しを検索します。「直前にある正規表
現」とはここで説明するメタキャラクタはもちろん,単なる文字列も含みます。
DOSのワイルドカードのアスタリスクとは意味が異なりますので注意してくだ
さい。例えばテキストの中で「プログラムマネージャ」のことを「プログラムマ
ネージャー」と表記しているかもしれません。このような場合,次のようなパタ
ーンで検索します。
プログラムマネージャー*
このパターンで検索すると,「プログラムマネージャ」のあとに音引き(ー)が
0回以上あれば総てマッチしますので「プログラムマネージャーーーー」という
意味不明の文字列にもマッチします。このような場合だけをマッチさせたい場
合は次に説明するメタキャラクタ(プラス)を使用します。逆に,このような文
字列はマッチさせたくない場合はそのまた次に説明するメタキャラクタ(疑問
符)を使います。
● + 直前のパターンの1回以上の繰り返し.
前述のように,ある文字が連続して現われる文字列を検索したい場合は,プ
ラス記号を使用します。
プログラムマネージャーー+
こうすると無駄な音引きを繰り返している文字列を検索できます。
● ? 直前のパターンが0回または1回現われる.
前述のように「ある文字が,あるかどうかわからない」という場合に使います。
プログラムマネージャー?
というパターンで検索すると「プログラムマネージャ」と「プログラムマネージ
ャー」にマッチします。ただし「プログラムマネージャーーーー」の最初の「プロ
グラムマネージャー」にもマッチします。「プログラムマネージャーーーー」は
相手にしたくない場合には最初に説明したキャラクタクラスの否定を用いて
次のようにするとよいでしょう。
プログラムマネージャー?[^ー]
● \< 英単語の始まり.
英単語とは正確には半角アルファベットと半角アンダースコア(_)だけで構
成される文字列を指します。したがって英単語として意味をもたない文字列も
これに含みます。
● \> 英単語の終わり.
英単語とは正確には半角アルファベットと半角アンダースコア(_)だけで構
成される文字列を指します。したがって英単語として意味をもたない文字列も
これに含みます。
● \w 英単語.
英単語とは正確には半角アルファベットと半角アンダースコア(_)だけで構
成される文字列を指します。したがって英単語として意味をもたない文字列も
これに含みます。
● メタキャラクタそのものを検索する場合
以上のキャラクタは特殊な意味をもちますが,その文字自体を検索する場合
は円記号でエスケープする必要があります。例えば疑問符を検索したい場合は
次のようにします。
\?
円記号も特殊記号ですので,円記号そのものを検索する場合は次のように円
記号でエスケープします。
\\
■ あいまい検索について
JRE.DLLバージョン1.08以降では,あいまい検索機能をサポートしています
(単体では体験版の機能のみ)。これは,検索時に全角文字と半角文字の区別を
せずに検索するためのもので,例えば「バージョン」という文字列を検索すると,
テキスト中の「バージョン」という文字列はもちろんのこと,半角で書かれた文
字列「バージョン」という文字列や,その他半角文字混じりで書かれた「バージョン」
も探し出します。逆に「バージョン」と,半角で書かれた文字列を検索しても「バージ
ョン」と「バージョン」の両方がマッチします。半角文字混じりの文字列で検索し
ても期待した結果が得られます。ただし,体験版ではメタキャラクタはあいま
い検索の対象外です。
● あいまい検索と正規表現の併用
拡張マッチを使用する状態でも,さらに正規表現が使用できます。
原則的にすべてのあいまい検索と正規表現が同時に使用できます。例えば
次のようなパターンで検索すれば行頭の「ザ」か,行頭の「ザ」とマッチしま
す。
^ザ
同様に次のようなパターンでは行末の「ズ」または,行末の「ズ」とマッチ
します。
ズ$
● あいまい検索の文字単位での無効化
検索パターンの中で,この文字はあいまい検索を使用したくないという場合
には,その文字を明示指定することにより文字単位であいまい検索を無効化す
ることができます。例えばTHE WINDOWSかThe Windowsを探したい場合に,素直
にTHE WINDOWSというパターンであいまい検索を行っても構わないのですが,
「T」と「W」は半角大文字と最初からわかっている場合はこれを明示指定し
ます。明示指定には,エスケープする方法とキャラクタクラスを使用する方法
があります。
\The \Windows
[T]he [W]indows
ただし,前項で述べたとおり,通常の正規表現はすべて有効となっています
ので,\Tを\tと記述するとタブと解釈し,\Wを\wと記述すると英単語と解釈す
る点に留意してください。
明示指定するとコンパイル速度,検索速度ともに若干向上します。
なお,この例は「とことんあいまい検索」での例です。体験版では大文字と小
文字を区別しない「あいまい検索」はできません。