正規表現の置換が上手くいかないNo.11742
yrk00770 さん 02/04/18 20:58
 
あるグラッフィクソフト用のパラメータファイルの処理をしておりまして
『行頭』に C:\ とか D:\ とかがある場合に、これらを削除したいと考え
ております。そこで、マクロで

replaceall "\nC:\\", "\n", regular;

とやったのですが、「エスケープシーケンスが解釈できません」というエ
ラーメッセージが出てしまいます。正規表現なので regular をオプショ
ンにつけ、\ は \\ とすれば良いかと思ったのですが…。勿論、

replaceall "\nC:\", "\n", regular;

ではエラーが出ます。

どこが間違っているのでしょうか。コメント頂ければ幸いです。

[ ]
RE:11742 正規表現の置換が上手くいかないNo.11743
tnobu2 さん 02/04/18 21:19
 
>あるグラッフィクソフト用のパラメータファイルの処理をしておりまして
>『行頭』に C:\ とか D:\ とかがある場合に、これらを削除したいと考え
>ております。そこで、マクロで
>
>replaceall "\nC:\\", "\n", regular;

ちょっとややっこしいですが、マクロ内では以下のように表現します。

replaceall "\\nC:\\\\", "\\n", regular;

[ ]
RE:11742 正規表現の置換が上手くいかないNo.11744
でるもんた さん 02/04/18 21:23
 
> あるグラッフィクソフト用のパラメータファイルの処理をしておりまして
> 『行頭』に C:\ とか D:\ とかがある場合に、これらを削除したいと考え
> ております。そこで、マクロで
>
> replaceall "\nC:\\", "\n", regular;
>
> とやったのですが、「エスケープシーケンスが解釈できません」というエ
> ラーメッセージが出てしまいます。正規表現なので regular をオプショ
> ンにつけ、\ は \\ とすれば良いかと思ったのですが…。

"\nC:\\\\" としてください。

マクロの "" の中では \ は特別な意味を持ちます。
たとえば、"" の中に " の文字そのものを書き込むためには "\"" としますよね。
この特別な意味を消すために \ を二重にして、さらに、正規表現での
特別な意味(\1 とか \f とかの用法ですね)をうち消すために
さらに二重にする必要があります。

あと、行頭を表すには \n よりは ^ のほうがよろしいかと…
\n を使うと、ファイルの冒頭にマッチしません。

[ ]
RE:11742 正規表現の置換が上手くいかないNo.11745
アルビレオ さん 02/04/19 00:07
 
replaceall "^[A-Za-z]:\\\\", "", regular;

がよろしいかと。
でるもんたさんが書かれているように、\nを使うとファイル先頭にマッチしません。
それに、正規表現の検索パターンとして\nを使えないソフトウェアも多いので
せっかくだから秀丸以外でも使える正規表現を知っておいた方がいいと思います。
余計なお世話かもしれませんが。

 11746 02/04/19 01:29 にしかぜ           「テンポラリファイルの読み込みに失敗〜
 11534 02/03/07 14:49  「テンポラリファイルの読み込みに失敗〜」エラーが出る
の投稿をしたにしかぜと申します。

再現の条件がわかりましたので報告します。
11534で書いた条件に加え、
「ファイルタイプ別の設定」「全般」で「先頭のタブ文字の後の折り返しをインデン
トしたように見せる」のチェックをつけたときに発生するようです。
お手数かと思いますが、またチェックしていただけないでしょうか。
よろしくお願いします。

[ ]
RE:11742 正規表現の置換が上手くいかないNo.11747
yrk00770 さん 02/04/19 11:43
 
質問者です。
上手くいきました。ありがとうございました。
行頭が ^ で表されるということを、恥ずかしながら知りませんでした。
皆さんはどこでこういったことを勉強されるのでしょうか。\n とか \t
などは広く使われるので知っていたのですが…。
いずれにしても大変助かりました。ありがとうございました。

[ ]
RE:11747 正規表現の置換が上手くいかないNo.11748
tnobu2 さん 02/04/19 12:13
 
>行頭が ^ で表されるということを、恥ずかしながら知りませんでした。
>皆さんはどこでこういったことを勉強されるのでしょうか。\n とか \t
>などは広く使われるので知っていたのですが…。

勉強できるところはいろいろありますが、まずは秀丸のヘルプで「正規表現」を
キーワードで引いてみましょう。最低限のことは書いてあります。

[ ]
RE:11748 正規表現の置換が上手くいかないNo.11749
tnobu2 さん 02/04/19 12:23
 
>>行頭が ^ で表されるということを、恥ずかしながら知りませんでした。
>>皆さんはどこでこういったことを勉強されるのでしょうか。\n とか \t
>>などは広く使われるので知っていたのですが…。
>
>勉強できるところはいろいろありますが、まずは秀丸のヘルプで「正規表現」を
>キーワードで引いてみましょう。最低限のことは書いてあります。

ヘルプを見直してみると"¥"がエスケープ文字であると書いてありながら
例には"\"が混在して書いてあります。
JISとASCIIの対応文字の違いとは言え、初心者には混乱を招きそうですね。>秀丸担
当さん

[ ]
RE:11749 正規表現の置換が上手くいかないNo.11752
秀丸担当 さん 02/04/19 17:49
 
>ヘルプを見直してみると"¥"がエスケープ文字であると書いてありながら
>例には"\"が混在して書いてあります。
>JISとASCIIの対応文字の違いとは言え、初心者には混乱を招きそうですね。>秀丸
>担当さん

これはどういうわけか¥と書いているはずなのに、OSによって表示が違い、
困っています。
なんとか修正したいと思います。

[ ]
RE:11752 正規表現の置換が上手くいかないNo.11754
tnobu2 さん 02/04/19 23:08
 
>これはどういうわけか¥と書いているはずなのに、OSによって表示が違い、
>困っています。
>なんとか修正したいと思います。

そうでしたか、失礼しました。
私の環境(Win98, Win2000共に)では"\"に見えてます。

確かにヘルプからコピーして秀丸に張り付けるとちゃんと"¥"になってますね。

[ ]