正規表現抜きでコピーしたいNo.06224
南天 さん 09/09/16 14:18
 
正規表現で書かれた文章を正規表現抜きでコピーしたいのですが
よろしくお願い致します。

http://hide\.maruo\.co\.jp/と書かれた文章の選択して
http://hide.maruo.co.jp/とコピーしたい
これは一例です。\(や\?などの正規表現も含みます。

[ ]
RE:06224 正規表現抜きでコピーしたいNo.06225
いいじま さん 09/09/16 14:59
 
南天さん、こんにちは。秀丸ユーザのいいじまです。

> http://hide\.maruo\.co\.jp/と書かれた文章の選択して
> http://hide.maruo.co.jp/とコピーしたい
> これは一例です。\(や\?などの正規表現も含みます。

まず仕様を固めましょう。

\を抜くだけだったら正規表現を使って置換することで実装できそうですが、
「択一」「繰り返し」等はどうしたいのでしょう。たとえば、

http://(www|hide)\.maruo\.co\.jp/ とか、
http://dokoka\.com\.jp/[0-9]+/ とか。

差し支えなければ、処理したいデータのサンプルをいくつか示してくれると、
マクロの作者さんたちも検討しやすいと思います。

[ ]
RE:06225 正規表現抜きでコピーしたいNo.06226
南天 さん 09/09/16 16:42
 
いいじま さま

>まず仕様を固めましょう。
>\を抜くだけだったら正規表現を使って置換することで実装できそうですが、
>「択一」「繰り返し」等はどうしたいのでしょう。・・・

そうですね。書き込んだ後に(?:xxx|xxxx)などもどうしようかと
思いました。

\を抜くだけにします。よろしくお願い致します。

[ ]
RE:06226 正規表現抜きでコピーしたいNo.06227
いいじま さん 09/09/16 16:53
 
>>まず仕様を固めましょう。
>>\を抜くだけだったら正規表現を使って置換することで実装できそうですが、

> そうですね。書き込んだ後に(?:xxx|xxxx)などもどうしようかと
> 思いました。
>
> \を抜くだけにします。よろしくお願い致します。

ならば、置換ダイアログで
    検索(S): \\(.)
    置換(E): \1
  ※「正規表現(R)」にチェック
とすればいいはずです。

[ ]
RE:06226 正規表現抜きでコピーしたいNo.06228
IKKI さん 09/09/16 20:03
 
こんにちは。ユーザの IKKI です。

> \を抜くだけにします。よろしくお願い致します。

対象は秀丸エディタ v7.x 以降ってことでよろしいですか?
ちょっと手抜きですが、こんな感じでどうでしょう。

// アンエスケープしてコピー.mac
if (!selecting) endmacro;
if (rectselecting) {
 message "BOX 選択範囲はアンエスケープしてコピーできません";
 endmacro;
}
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
#CopyClear = getregnum("CopyClear");
closereg;
call Unescape gettext(seltopx, seltopy, selendx, selendy, (!#CopyClear));
setclipboard $$return;
endmacro;

Unescape:
loaddll "HmJre.dll";
if (!result) {
 message "HmJre.dll がロードできません";
 return $$1;
}
$$r = dllfuncstr("ReplaceRegular", "\\\\(.)", $$1, 0, "\\1", true);
if ($$r == "") $$r = $$1;
freedll;
return $$r;

[ ]
RE:06228 正規表現抜きでコピーしたいNo.06229
南天 さん 09/09/16 21:25
 
いいじまさま
助言ありがとうございます。
しかし、マクロがよく分かっていないので分かりませんでした。

IKKIさま
うまくいきました。ありがとうございます。

[ ]