==============================================================================     VZの文字列検索を拡張するため(正規表現、全角半角同一視)の                              サービス・プログラム             <<VWX.COM>> Ver 1.07            リファレンスマニュアル Copyright (C) 1992,1993 by M.Ishida(wing) NIFTY-Serve:QFF00306 日経MIX :wing ============================================================================== ■ VWXとは  VZの文字列検索で正規表現による検索を可能にしたり、全角半角を同一視する検索 を可能にするためのサービス・プログラムです。  VZでの文字列検索利用前に、VWXをメモリに常駐させておくことで正規表現などが使 用出来ます。  ★常駐プログラムに拒否反応を示す方もいらっしゃるようですが、VWX は自分だけで  は何も出来ない、おとなしいプログラムです。 ■ VWXの組み込み VWXをメモリに常駐させる場合の書式は、次のとおりです。     A>vwx {-<オプション>[+|-]} [例] A>vwx -z2 -x1  取り外す時は、 A>vwx -r  を実行します。 ■ 利用方法  VZには RX,ZHというスイッチが定義されていますので、これを適宜指定して下さい。 (1)RX+ で、検索文字列に正規表現が使用可能となります。 ただし、検索文字列にVZで定義されている検索用の特殊文字、\n,\l,\rが 含まれる場合は正規表現と扱われません。mオプションで正規表現とするこ とも可能です。 (2)ZH+ で、全角・半角を同一視した検索が可能となります。 ただし、VWX を x オプション付きで起動する必要があります。 大・小文字同一視と併せて、例えば、VZ で vz Vz vz VZ Vz VZ などを見つけます。   (注)ZH+を指定しても、\n が検索文字列の先頭/最終以外に含まれていると全角 ・半角を同一視した検索は行いません。 これは行をまたがった検索は出来ないという制限からきています。 (3)検索文字列にタグ付き正規表現が使われているとき、置換文字列にタグを利   用した文字列指定が行えます。 ■ オプション  用意しているオプションは次の通りです。VWX -z2 -l3000などと指定します。  オプションの大文字・小文字は区別していません。 ----------------------------------------   -zn        :常駐にUMB/EMSを使用 ----------------------------------------  z1 : UMBがあればUMBに常駐します。 z2 : 常駐にEMSを利用します。メインメモリの常駐サイズが1536バイトとなります。     必要なEMSのページ数はデフォルトでは1ページですが、l オプション等での指     定により連続した2ページの物理ページが必要となる場合もあります。 ----------------------------------------   -r        :常駐の解除 ----------------------------------------  VWXの常駐を解除します。  VZ を使用していない時に VWX を常駐したままでも実害は無いはずですが、メモリ が足りない場合などのために、常駐を解除するためのオプションを用意しています。 ----------------------------------------   -lnnnn      :1行の最大長 ----------------------------------------  VWXでは1行の最大長は1024文字として処理していますが、このオプションでこの文字 数を変更出来ます。nnnnに1行の最大長を512バイトから8192バイトの間で指定して下さ い。  例えば3000文字としたい場合は -l3000 とします。  この値によりメインメモリの常駐サイズは変化します。 ただし、-z2で常駐した場合にはこの指定の大小によりメインメモリの常駐サイズは変 化しません。 ----------------------------------------   -mn       :メタキャラクタの扱い ----------------------------------------  m1 : VZで定義されている検索用の特殊文字(\n,\l,\r)が検索文字列中にあっても     VZオリジナルの検索ルーチンを使用しない。 m2 : \c はメタキャラクタに限らず任意の文字c について文字c そのものと扱う。    \t、\sもt、sと扱われる。 ----------------------------------------   -xn       :同一視レベル ----------------------------------------  このオプションでは、VZでZH+を指定した時の同一視のレベルを指定します。 (1) n = 0の時(x オプションを指定しない場合も同じ) ZH+を指定しても意味を持ちません。 (2) n = 1 の時(単に x だけを指定しても同じ) ZH+の時は、全角と半角を同一視します。 (3) n = 2 の時 ZH+の時は、ひらがなとカタカナを同一視します。 (4) n = 3 の時 ZH+の時は、全角、半角、ひらがな、カタカナを同一視します。  このオプションを指定すると常駐サイズが若干増加しますので、ZH+ を使用しない場 合は、指定しないことをお勧めします。  また、このオプションは常駐後にも変更可能です。ただし、x オプション付きで常駐 した場合に限ります。 ----------------------------------------   -vn       :検索処理条件指定 ----------------------------------------  このオプションでは、検索文字列の処理に関する指定を行います。  n は0から3の値を取ることが出来、その意味は以下の通りです。  +1: \a,\0,\A,\0,\a,\A でそれぞれ以下の正規表現の代用が出来ます。   [a-z]+,[0-9]+,[A-Z]+,[0-9]+,[a-z]+,[A-Z]+  +2: RX-,ZH+ の指定の時にも、|,& を正規表現として認識するようになります。  このオプションは常駐後にも変更可能です ■ VZマクロとの相性  VZの既存のマクロでは、当然ながら検索文字列が正規表現と解釈され得ることを想定 していないため、RX+ が指定してあると予期せぬ動作となることがあります。  この様な無用な問題を防ぐための手段として、以下に示す方法があります。  ・実際に文字列を検索する時にのみ、RX+ とする。   あるいは、  ・RX+を指定するのでは無く \x(正規表現検索スイッチ)を検索文字列とともに使用   する。   [例] \x [a-z][a-z]       RX- であっても正規表現として、[a-z][a-z]を検索します。  y.mikome さん(NIFTY-Serve HFD00076)が次のようなマクロを紹介されています。  ここに記載させて頂きます。ただし、ここでjpと記述されているのはVZ Ver 1.6では zhとなります。 【ここから、y.mikome さんの NVIEW.DOC からの引用です。】 ----------^ RE.DEF -----------------------------------------< cut here 40 ^QF [F06] "Find" ?. rx=jp+, #F :A &l (s)? >A rx=jp=mp==2, 40 ^QA [F07] "Replace" ?. rx+, jp=ks&1, #56 :A &c (s)? >A rx=jp-, 40 ^@ \[INS] "Paging" ?. (cm-30 && mp)? mp2, #@ rx=jp=mp==2, ----------$ RE.DEF -----------------------------------------< cut here ※ 検索では、結果として検索モードになったときのみ rx+ jp+ になります。 ※ 置換では rx+ jp- (シフト実行で jp+)で置換後、rx- jp- に戻します。 ※ ^L 取得は rx- の方が都合が良いので除外してます。 ※ vz.def *O オプションに rx- を加えておいてください。 ※ ^Q コマンドとファンクションの両方をマクロにせず、 片方をノーマルのまま にしておけば正規表現使用の有無を使い分けられます。 【引用終わり】 ■ 正規表現  ・利用可能な正規表現は次の通りです。 (1) c 以下に示すメタキャラクタを除き文字 c は、その文字自身を意味する。 (2) \c メタキャラクタとしての意味を打ち消す場合に使用し、文字cそのものを表わ す。ただし、\tはタブ記号、\sは空白文字を意味する。 (mオプションの項参照) (3) ^     パターンの先頭に存在するときのみ、行の先頭を意味する。 (4) $  パターンの最後尾に存在するときのみ、行の末尾を意味する。 (5) .  改行を除いた任意の1文字を表す。全角文字も1文字と扱う。 (6) [...] [] 内に含まれる任意の1文字を表す。a-z、あ-お等のような範囲指定も可能。 (7) [^...]  [] 内に含まれない任意の1文字を表す。(6)と同じく範囲指定も可能。 (8) r* 正規表現 r を0回以上繰返したものを意味する。 (9) r+ 正規表現 r を1回以上繰り返したものを意味する。 (10)r?  正規表現 r の0回または1回を意味する。 (11)r1|r2  正規表現 r1 または r2 を意味する。 (12)\(r\)  正規表現 r を出現順に最大9個まで記憶する。(タグ付き正規表現) (13)\N  タグ付き正規表現により記憶した N 番目の文字列を示す。 (14)r1&r2  正規表現 r1 かつ r2 を意味する。 ■ テクニカルノート  ● VWXの存在確認及びAPI ENTRYの取得   INT 2FH - VZ Editor の友 (VWX.COM) - INSTALLATION CHECK  AX = E900h       BX = 5657h('VW')       CX = 0000h   Return: AL = FFh if installed       ES:BX -> FAR entry point    CH = major version  CL = minor version * * * * * * * * * * * * * * *  ● VWXのAPI FUNCTION   ・ALレジスタに機能コードをセットして、API entryアドレスをFAR CALLする。   ・INT 2FH による API 利用も可   INT 2FH - VZ Editor の友 (VWX.COM) - オプション指定値の更新  AX = E906h       BX = 5657h('VW')       CL = 00h/01h(=x option/v option)       CH = オプション指定値   Return: CH = オプション指定値を更新した時:オプション指定値 + 80h    オプション指定値を更新出来なかった時:00h   INT 2FH - VZ Editor の友 (VWX.COM) - オプション指定値の参照  AX = E907h       BX = 5657h('VW')       CL = 00h/01h(=x option/v option)   Return: CH = オプション更新が可能 :オプション指定値 + 80h    オプション更新が不可能:00h  ● その他の留意事項   検索機能についてはVZを意識した作りになっている箇所がある都合で記載は省略  します。(VZのソースを見ていただけると利用方法は判ると思います。)   必要があれば汎用版の作成・公開も考慮いたします。 ■ 動作環境  対応するVZが無いと意味がありませんが、Ver 3.1 以降の日本語MS-DOS汎用だと思い ます。(VZのバージョンは、Ver 1.59b(評価版) 以降が必要です)  なお、VZの著作権は作者の兵藤氏(c.mos)にあり、販売権はVillage Center Inc.が 所有しています。 ■ 制限事項など  (1) バイナリ・ファイルでの正規表現は使わない方が安全です。  動作は保証しません。 (2) 行をまたがった検索は出来ません。 (3) OR/AND 検索で一度に指定可能な検索パターンは16個までです。 (4) VZ側でのワードサーチは無視されます。   全角・半角同一視時はこのような仕様ですが、全角・半角区別時に正規表現を利   用した場合については、将来の改善項目として対応を考えています。 (5) 正規表現を利用した置換については期待される結果とは異なる動作をする場合が   あり得ますので、いきなり全置換を行う場合には注意が必要です。 ■ その他  (1) VWXはフリーソフトウェアです。著作権は石田 暢彦(wing)が所有します。 (2) 転載・配布は自由ですが、一言声を掛けていただけるとうれしいです。 (3) このプログラムを使用したことによって生じた損害は、全く保証しません。 (4) 作者は、このプログラムに不備があっても、それを訂正する義務を負いません  が、努力はするでしょうから連絡をお願いします。 (5) 仕様拡張に関する意見は、私の技術と体力と気力が許す範囲で対応します。  ◎ VWX の最新バージョンは以下のネットで入手可能です。  ・NIFTY-Serve FVC または FGALPK     ・日経MIX v.c./lib その他、常識的に取り扱って下さい。 ■ 履歴 -- Ver 0.35 92/02/10 --   ・前方検索のみサポート版リリース -- Ver 0.40 92/02/14 --   ・後方検索、置換サポート版リリース   ・細かな不具合修正 -- Ver 0.50 92/02/22 --   ・テキスト先頭で後方検索を行うと不正なテキストを表示することがあった。   ・大文字・小文字を検索時に同一視する指定がしてあると検索が出来なかった。   ・置換が正しく出来ない場合があった。   ・\t、\s単独での正規表現が出来なかった。 -- Ver 0.51 92/02/24 --   ・行の先頭を表す ^ の機能が働いていなかった。 -- Ver 0.52 92/02/25 --   ・\.で'.'の検索が出来なかった。   ・ABC[A-Z]などの文字列指定時、後方検索が正しく出来なかった。 -- Ver 0.53 92/02/26 --   ・少しだけ処理改善 -- Ver 0.54 92/04/04 --   ・後方検索で正しく文字を検索しない場合があったものを修正  ・-z2オプションでEMSを利用可能にした。   ・-lnnnnオプションで1行の最大長を可変とした。 ・VZで特殊文字として定義されている\n、\l、\rが使われていると正規表現とみ  なさないようにした。 -- Ver 0.54a 92/05/06 -- ・先頭行の文字列を後方検索で正しく検索出来ないことがあった。 -- Ver 0.54b 92/05/10 -- ・カーソル位置が漢字の上にある時に検索が正しく行えないことがあった。 ・1行の最大文字数を越える行があると不正な動作をすることがあった。 ・lオプションの最小文字数を512とした。 ~~ -- Ver 0.54c 92/05/16 -- ・z2オプションでEMSを最大2ページを使い、1行の最大文字数を増やした -- Ver 0.54d 92/05/24 -- ・x、mオプションを新設した。 -- Ver 0.54e 92/06/08 -- ・行末が漢字1バイト目で終了している時の処理を変更した。 -- Ver 0.55 92/06/11 -- ・全角半角同一視をする検索を可能にした。(x オプション の仕様は変更した。) -- Ver 0.55a 92/07/20 -- ・全角・半角同一視の時に\n の検索が不正となっていた。 -- Ver 0.55b 92/07/28 -- ・OR検索モドキに対応開始 -- Ver 0.55c 92/07/29 -- ・^$の検索が不正であった。 (中略) -- Ver 0.56b 92/09/05 -- ・常駐解除は -r オプションを指定した場合とした。 -- Ver 0.57 92/10/28 -- ・EMS制御 が不正であり、最悪ハングアップする場合があったものを修正した。 ・l オプションの指定が最大値 8192 より大きな場合エラーとした。 -- Ver 0.58 92/11/11 -- ・EMS制御に重大な欠陥があり修正した。  (まるハさん(NIFTY-Serve:GHF02203)の御協力を頂きました。   ありがとうございます。) ・ひらがなとカタカナを同一視する検索を可能にした。 -- Ver 0.58a 92/11/28 --   ・UMB へロードする場合の不都合をなるべく回避するようにした。   ・EMS が使用出来ない条件でもEMSのハンドルを確保したままとなる不具合を修正 -- Ver 0.58b 92/11/29 --   ・EMS 1ページ削減 -- Ver 0.58c 92/12/03 --   ・メインメモリの常駐サイズをわずかながら削減 -- Ver 0.58d 92/12/04 --   ・EMS の無駄な2ページを不要とした。 -- この後小さな修正、改良をかなり行うが省略。 -- Ver 0.59e 93/01/10 --   ・タグ付き正規表現をサポート (NIFTY-Serve FGALPK で暫定公開) -- Ver 0.59f 93/01/11 --   ・OR検索が出来なくなっていたものを対策した。 -- Ver 1.00 93/01/20 --   ・タグ付き正規表現サポート正式版 -- Ver 1.00a 93/01/24 --   ・置換時に例えば \\a が \a と解釈されない不具合を修正 -- Ver 1.00b 93/01/30 --   ・x オプションを付けていないと、1行の長さがある程度長いときにハングアップ    していたものを対策した。 -- Ver 1.00c 93/03/13 --   ・「ム」と「む」を同一視することが出来ていなかったものを修正した。 -- Ver 1.00d 93/03/28 --   ・ファイル名表示が小文字のとき、拡張子によりファイル名の表示色を変えること    が出来なかったものを修正した。 -- Ver 1.00e 93/05/28 --   ・^$がEOFにマッチしてしまい、置換時にハングアップするなどの異常動作してい    たものを修正した。 -- Ver 1.00f 93/06/25 --   ・AND検索をサポート -- Ver 1.00g 93/07/05 --   ・abc$|xyx$ タイプの検索時に正しく検索できなかった。 -- Ver 1.00h 93/07/25 --   ・VZ のテンポラリ・ファイルを XMS に取れるようにした。(非公開) -- Ver 1.00i 93/09/26 --   ・正規表現 「.」 が全角の濁点・半濁点などにマッチしないことがあったものを    改善   ・常駐時にNULデバイスにリダイレクトするとファイル・ハンドルが1個減るのを    修正 -- Ver 1.00j 93/10/02 --   ・INT 2Fhで常駐確認して、API をファーコールするように変更した。 -- Ver 1.00k 93/10/03 --   ・VZ のバージョンアップ予定にともない、VWX の機能を整理した。 -- Ver 1.00l 93/10/03 --   ・VZ Ver1.58f(評価版)では、タグ付き正規表現が機能しなくなっていたものを    対策した。 -- Ver 1.00m 93/10/04 --   ・コマンドラインからの同一視レベルの変更が出来なくなっていたものを修正   ・タグ展開時に展開バッファ(VZ の置換文字列バッファ)のサイズをオーバした    ことを認識出来るようにした。 -- Ver 1.00n 93/10/08 --   ・X オプションを付けずに全角・半角同一視を行うと不正動作していたものを修正 -- Ver 1.00o 93/10/09 --   ・RX-,HZ+ をサポートするためにVZ とのインタフェースを少し変更。 -- Ver 1.00p 93/10/12 --   ・\a,\0 などを拡張正規表現としてサポート   ・^[で 行頭の[ が検索出来なかったものを修正 -- Ver 1.01 93/10/15 --   ・公開用に少し手直し -- Ver 1.01a 93/10/16 --   ・全角・半角同一視時の後方検索が不正であったものを修正 -- Ver 1.01b 93/10/17 --   ・若干の改良 -- Ver 1.01c 93/10/18 --   ・全角・半角同一視時に、正規表現を含まない文字列の置換処理が不正に行われて    いたものを対策   ・その他若干の改良 -- Ver 1.02 93/10/23 --   ・正規表現 ^,$ などを利用して置換する際に不正な振る舞いをしていたものを修正    した。(VZ Ver 1.59b 以降が必要)   ・全角・半角同一視時だけの指定時にも、|,& を認識するオプションをv オプショ    ンに追加(従来の v オプションを拡張した。) -- Ver 1.02a 93/10/24 --   ・正規表現 $ の置換動作を変更   ・後方検索時に不正な検索をすることがあったものを修正 -- Ver 1.02b 93/10/30 --   ・\0+ タイプの正規表現でハングアップしていたものを修正   ・全角・半角同一視指定時に ゼ で ゼ が検索出来なかったものを修正 -- Ver 1.02c 93/11/02 --   ・正規表現 | が正しく動作しないことがあったもの(ウゴクトモアッタトイウレベル(^_^;))    を修正 -- Ver 1.03 93/11/06 --   ・正規表現 $ を含んだ後方検索が正しく行えなかったものを改善 -- Ver 1.03a 93/11/10 --   ・ある種の常駐ソフトが組み込まれた後で、VWX が組み込めなかったものを改善 -- Ver 1.03b 93/11/12 --   ・OR/AND 検索時に異常な振る舞いをすることがあったものを修正   ・INT 2FH で、x オプションの設定を参照・更新出来るようにした。 -- Ver 1.03c 93/11/14 --   ・検索文字列先頭の | 及び & は文字として扱うようにした。   ・全角・半角同一視時に、正規表現を含まない文字列の置換処理が不正に行われて    いたものを対策(Ver 1.03b でのデグレード) -- Ver 1.04 93/11/23 --   ・OR 検索時にどの検索文字列にヒットしたかの情報を通知するようにした。    (表面的には変更したことは見えません。VZ側の vr で参照可)   ・VZ で Rx-,Zh+ の時にもタグ付き正規表現等を解析してしまっていたものを修正 -- Ver 1.05 93/11/30 --   ・自力で UMB に常駐する機能を追加(SAY(zob10141) さんの umbkit.inc を利用)   ・起動時のメッセージを変更した。(T.Tanomura さんのご指摘による)   ・VZ で Rx-,Zh+ の時に、文字列先頭または最終の \n を認識するようにした。    (\n\nxyz などには対応していません。この場合は自動的に全角半角同一視はし     ない検索となる)   ・コマンドラインから x/v オプションが変更出来なかった。 -- Ver 1.06 93/12/01 --   ・正規表現を使った OR 検索が出来なくなっていた(^_^;) -- Ver 1.07 93/12/01 --   ・z オプション指定時に UMB の空き領域が足りない時に、検索時点でハングアップ    していたのを修正   ・MCB 内のプログラム名が VZ になっていた。 ===============================================================================