検索文字列No.13959
highwide さん 03/01/29 20:55
 
初めて投稿します。

検索において、タブ等が含まれている文字列を取得すると、
・・・などと表示されます。
これを、きちんと正規表現で取得する方法はないでしょうか。
よろしくお願いします。

[ ]
RE:13959 検索文字列No.13966
ひろ さん 03/01/31 17:09
 
 highwide さん今日は、ひろです。
> 検索において、タブ等が含まれている文字列を取得すると、
> ・・・などと表示されます。
> これを、きちんと正規表現で取得する方法はないでしょうか。
 このままタブを取り込んだまま検索できますが、何故この様な機能が必要な
のでしょう? また下手に「\t」と正規表現に変換しても、一緒に取り込んだ文
字列のことを考えると、「正規表現」を ON にするわけにもいきません。

[ ]
RE:13959 検索文字列No.13967
秀丸担当 さん 03/01/31 18:43
 
>検索において、タブ等が含まれている文字列を取得すると、
>・・・などと表示されます。
>これを、きちんと正規表現で取得する方法はないでしょうか。
>よろしくお願いします。

ひろさんの言われるように、正規表現として取り込むと正規表現で
検索しなければならなくなります。
また、するとしたら\tだけではなく「(」「)」や「\」などもいろいろ
変換しなくてはならなくなってきますね。
検索の入力部分の表示はおかしいですが、検索はできます。
ちなみにWindowsXPでは、・・・ではなくちゃんとタブで表示されました。

[ ]
RE:13967 検索文字列No.13972
highwide さん 03/02/03 10:36
 
ひろさん・担当さん、こんにちは。

正規表現で置換したいというのが理由です。
検索文字列にTABを含み、
置換文字列に改行を含む場合等です。

XPではそのままできるのでしょうか。
現在まだ98なので...

[ ]
RE:13972 検索文字列No.13975
ひろ さん 03/02/03 17:52
 
 highwide さん今日は、ひろです。
> 正規表現で置換したいというのが理由です。
 やりたいことは解りますが、正規表現を使いこなせるユーザの方が少ないと
思います。また使いこなせるユーザでも毎回使うわけではありません。よって
標準で変えてしまうわけにはいかないと思います。
 ##マクロで別途作るなら別ですが...。

[ ]
RE:13972 検索文字列No.13976
秀丸担当 さん 03/02/03 19:11
 
>正規表現で置換したいというのが理由です。
>検索文字列にTABを含み、
>置換文字列に改行を含む場合等です。

正規表現として取り込むと、検索の履歴が混乱してしまうの
で難しいです。
まあ、現状でも手入力した正規表現と混在しているのですが。

>XPではそのままできるのでしょうか。
>現在まだ98なので...

XPでは見た目上「・・・」ではなくタブになって見えるという
だけで、正規表現になるわけではありません。

[ ]
RE:13959 検索文字列No.13980
アルビレオ さん 03/02/04 03:55
 
アルビレオです。

>検索において、タブ等が含まれている文字列を取得すると、
>・・・などと表示されます。

これは厳密にはWinodwsの仕様です。
Windows標準のファイル検索ダイアログでも同じ現象が起きました。

テキスト入力フィールドに対するキーボードからのTAB入力は「フォーカスの切り替
え」にあたるため、文字列のペーストもキー入力と同様に処理してしまうために他の
文字に置き換える必要があるのでしょう。
おそらくXPなどではキー入力とテキストのペーストでこのあたりの処理を分けたのだ
と思われます。

以上のことから、Win9xではテキストフィールドにタブ文字を入力することは不可能
だと思われます。
「TAB文字を含んでいるときは正規表現がONになる」というのは動作としてわかりに
くいですし、デフォルトで常に正規表現がONになっているのも同様に使いにくいでし
ょう。
かといって正規表現がOFFのときでもタブ文字だけは「\t」とするようにしてしまう
と、今度は「\t」という文字列を検索したいときに不便です。
(「\\t」と表記する手もありますが、これによって混乱する人も少なくないでしょう)

タブや改行を含んだ文字列を検索したいなら、多少手間ですがいったん「新規ファイ
ル」を開いてそこにペーストし、手動でタブや改行を「\t」「\n」に置換してからそ
れをコピー、検索したいウィンドウに戻ってから「検索」を選んでペースト、正規表
現をONにして検索実行という手もあります。
比較的長い文字列やタブ文字を多く含んでいる場合はこの方法がいいでしょう。

[ ]
RE:13980 検索文字列No.13982
IKKI さん 03/02/04 15:10
 
IKKI です。横から失礼します。

この件、そういうマクロを作ってしまえばいいのでは…と思ってやってみたんですが、
下の方法では setsearch で検索文字列を設定してもダイアログに反映されないんで
すね。(秀丸 3.19 / Win2k)
マクロでダイアログ内の検索文字列を制御する方法があるといいのですが。

------------------------------------------------
getsearch;
call EscapeRegular searchbuffer;
setsearch $$return, 0x14;// 置換, 正規表現
setreplace $$return;
replace;
endmacro;

EscapeRegular:// 正規表現エスケープ
##i = strlen($$1);
while (##i > 0) {
##c = ascii(rightstr($$1, ##i));
if (strstr("$()*+.?[\\]^|", char(##c)) >= 0) $$r = $$r + "\\" + char(##c);
else $$r = $$r + char(##c);
##i = ##i - strlen(char(##c));
}
return $$r;
------------------------------------------------

#置換ダイアログを出す文 replace がヘルプに載っていないようです。

[ ]
RE:13982 検索文字列No.13988
秀丸担当 さん 03/02/04 19:03
 
>マクロでダイアログ内の検索文字列を制御する方法があるといいのですが。

これは、できませんね。方法がないか検討いたします。

>#置換ダイアログを出す文 replace がヘルプに載っていないようです。

書くようにしておきます。報告ありがとうございます。

[ ]