[ 新規に投稿する ]

複数行コメント(強調表示文字列(複数行))の"エスケープ文字"とNo.41833
ANACOSTIA さん 25/03/26 10:19 [ コメントを投稿する ]
   複数行コメント(強調表示文字列(複数行))のプロパティにある、"エスケープ文字"とはどのような使い方をするのでしょうか?
 ヘルプを見ても理解できませんでした。

 というのは、
"["と"]"の間を無視して対応する括弧の強調表示をする為に、
・開始文字列を"["
・終了文字列を"]"
・表示方法を"文字定数"等
という設定をしている。
 この時、"\["なら("["の前に"\"があれば)、文字定数等の開始文字列として認識させないようにする為、
・エスケープ文字に"\"
を設定した。
 この状態で"\["と入力したら、"\["以降が文字定数等として認識されてしまった。
ということがきっかけです。
[ ]
RE:41833 複数行コメント(強調表示文字列(複数行))の"エスケープ文No.41834
(-L-) さん 25/03/26 13:08 [ コメントを投稿する ]
> この時、"\["なら("["の前に"\"があれば)、文字定数等の開始文字列として認識させないようにする為、
>・エスケープ文字に"\"
>を設定した。
> この状態で"\["と入力したら、"\["以降が文字定数等として認識されてしまった。
>ということがきっかけです。

ヘルプをみると
> 文字列の強調表示を定義するときに、エスケープ文字として使用する文字を指定します。
> 例えば、開始文字列「"」,終了文字列「"」,エスケープ文字「\」としておくと、\の直後の1文字は無視して、以下のような感じになります。

とあるので、

エスケープ文字「\」としておくと、エスケープ文字「\」の直後の1文字は無視

となって、直後の1文字である [ が無視されているのでしょうね。
(指定したエスケープ文字そのものではなく、指定したエスケープ文字直後の1文字が無視される)
[ ]
RE:41834 複数行コメント(強調表示文字列(複数行))の"エスケーNo.41835
秀丸担当 さん 25/03/26 14:03 [ コメントを投稿する ]
  エスケープ文字は、C言語やJavaScriptなどの一般的な文字列のことを想定しています。
カスタマイズできるものの、ほぼ\しか用途が無いと思います。
判断するのは強調が開始してから終了するまでの間で、開始文字列の"["については適用されないです。
1つ前の文字というより、\の次にある文字を無視します。
[\]]の場合は\]が無視されます。
[\\]]の場合は\\が無視され、括弧が一個あまります。
ヘルプに書いてはどうかという話になると思うので、そういうご意見があるということで参考にさせていただきます。
[ ]
(発言者削除)No.41836
ANACOSTIA さん 25/03/26 14:38
 
[ ]
RE:41835 複数行コメント(強調表示文字列(複数行))の"エスケーNo.41837
ANACOSTIA さん 25/03/26 14:50 [ コメントを投稿する ]
   エスケープ文字は開始文字列と終了文字列そのものには影響せず、開始文字列と終了文字列の間の文字列のみを対象にするということでしょうか?
 開始文字列と終了文字列そのものにも有効だと認識していました。
 現在は、開始文字列を正規表現で"(?#lookbehind)(?<!\\)\["としています。
 "(?#lookbehind)"はお呪いです。
[ ]
RE:41837 複数行コメント(強調表示文字列(複数行))の"エスケーNo.41840
秀丸担当 さん 25/03/26 16:26 [ コメントを投稿する ]
  はい。
エスケープ文字は開始文字列と終了文字列の間の文字列のみが対象になります。
[ ]

[ 新規に投稿する ]