正規表現の部分を強調No.02867
える さん 99/04/09 03:49
 
強調表示で正規表現が使えますが、その中の一部だけを強調するというような拡張は
できないもんでしょうか?
たとえば、正規表現のメタキャラクタに { と } を追加し、JRE32.DLL に渡す前に秀
丸が除去することにして、正規表現にマッチした時は { と } の間の内容だけ強調表
示される…みたいな機能がほしいと思うのです。
必要性がでる例として Delphi の message 指令は単純に正規表現で

[Mm][Ee][Ss][Ss][Aa][Gg][Ee] +[\w0-9]+ *;

と記述すると

message WM_ACTIVE;

にマッチしますが、この時に message の部分だけを強調対象にしたいのです。
マクロを使っても無理そうな感じがしました。

jre32.dll じゃなくて bregexp.dll(perl5互換) であれば

(?i)message(?=\s+[\w\d]+\s*;)

という正規表現にしたいところなんです。

[ ]
RE:02867 正規表現の部分を強調No.02875
ひろ さん 99/04/09 15:45
 
 えるさん今日は、ひろです。
> にマッチしますが、この時に message の部分だけを強調対象にしたいのです。
 message を「特に強調」に割り当てては如何でしょうか?

[ ]
RE:02875 正規表現の部分を強調No.02883
秀丸担当 さん 99/04/09 16:51
 
> えるさん今日は、ひろです。
>> にマッチしますが、この時に message の部分だけを強調対象にしたいのです。
> message を「特に強調」に割り当てては如何でしょうか?

それだとただの message だけの個所もひっかかってしまうので、

[Mm][Ee][Ss][Ss][Aa][Gg][Ee] +[\w0-9]+ *;

を普通の強調表示にして、

[\w0-9]+ *;

を特に強調にして、特に強調の色を普通の色にしてみては・・?

[ ]
RE:02883 正規表現の部分を強調No.02889
える さん 99/04/09 22:24
 
>> えるさん今日は、ひろです。

ひろさん、担当様、おはようございます。

>>> にマッチしますが、この時に message の部分だけを強調対象にしたいのです。
>> message を「特に強調」に割り当てては如何でしょうか?
>それだとただの message だけの個所もひっかかってしまうので、
>[Mm][Ee][Ss][Ss][Aa][Gg][Ee] +[\w0-9]+ *;
>を普通の強調表示にして、
>[\w0-9]+ *;
>を特に強調にして、特に強調の色を普通の色にしてみては・・?

えっと…これを行うと、他の「強調」になっている予約語たちが全滅はせずとも壊滅
するような気がするのですが?
っと、試したところ、非常に多くのパターンにマッチするだけあってかなりひどいこ
とになりますね (^^;

指令語の着色は難しいですねぇ…。
うー、Delphi Highligt Rev.2 はとりあえずメッセージ定数まで着色で御茶を濁して
おきますぅ。

[ ]