文字列定数の色付けNo.33714
LIBE さん 14/11/13 10:29
 
"〜〜\"〜〜\"〜"
と書かれた部分全体を色付けしようと、複数行コメントで開始文字列「[^\\]"」終了
文字列「[^\\]"」とすると、開始の「"」の位置文字前まで色つけされ、また「""」
のような文字列だとその一組で開始位置に判定されてしまいました。

「[]」で文字を指定すると、色付け範囲に含まれるというのがわかったのですが、解
決する方法が判りません。どのようにすればいいでしょうか?

[ ]
RE:33714 文字列定数の色付けNo.33715
秀丸担当 さん 14/11/13 11:31
 

文字列のエスケープ文字を想定した設定があって、複数行コメントのユーザー定
義のプロパティで、「エスケープ文字」に「\」を書いておくといいと思います。
エスケープ文字を指定しておくと、開始文字列と終了文字列は「"」だけでいい
です。

正規表現で書く場合は、条件には含めたいけど、ヒットする範囲には含めたくな
い場合は、「前方一致」「前方不一致」「後方一致」「後方不一致」や、
「ヒットした扱いにするタグ」があります。

例えば、直前に「\」が無い場合の「"」で、「"」だけにヒット、という意味で
は、前方不一致を使って「(?<!\\)"」と書くことができます。

ただC言語のような文字列リテラルを想定しているとしたら、"\\"は「\」を表し
ていて、終端を判断するためにはもっとややこしい正規表現になると思うので、
「エスケープ文字」の設定を使うのが簡単でいいと思います。

[ ]
RE:33715 文字列定数の色付けNo.33716
LIBE さん 14/11/13 11:39
 
ありがとうございました。

[ ]