強調表示の仕様について。No.04445
つよきち さん 99/11/18 17:46
 
秀丸、愛用させてもらってます。

強調表示の仕様について要望があります。


例えば、

1、AAAという文字列を強調させたい場合は、強調文字を以下のように登録します。

検索文字列 : AAA
大文字/小文字の区別 : チェックする
単語の検索 : どちらでも
正規表現 : チェックしない

すると、

BAAA という文字列の時 -> AAAが強調されます。
CAAA という文字列の時 -> AAAが強調されます。

ところが、私の場合、「CAAAの中のAAAのみ強調したい」ことがあります。
(いうまでもありませんが、この場合 単語の検索 チェックは無意味です。)


2、行頭 3文字目から始まるAAAを強調表示したい場合は、以下のように登録します。

検索文字列 : ^..AAA
大文字/小文字の区別 : -----
単語の検索 : どちらでも
正規表現 : チェックする

すると、
(行頭から)(空白)(空白)AAA という文字列の時
 -> 見た目ではAAAが強調されます。

ところが、

(行頭から)11AAA という文字列の時
 -> 11AAAが強調されます。
 
 が強調したいのは当然AAAのみです。


以上のようなことから、タグ付き正規表現による置換 のような機能を持たせ、
検索する文字列と、実際に強調表示する文字列が別々にあったらいいなと思った次第
です。

1番目の例だと、

検索文字列 : C\fAAA
表示文字列 : \1

2番目の例だと、

検索文字列 : ^..\fAAA
表示文字列 : \1

というような感じです。


無理でしょうか(^^;;)

[ ]
RE:04445 強調表示の仕様について。No.04446
える さん 99/11/18 23:16
 
>強調表示の仕様について要望があります。
> が強調したいのは当然AAAのみです。

以前、同じことを聞いてみましたが、現状では駄目ってことで。
bregexp.dll を使うようにすれば解決するかと思います。

[ ]
RE:04446 強調表示の仕様について。No.04448
つよきち さん 99/11/19 10:18
 
えるさんコメントありがとうございます。

>以前、同じことを聞いてみましたが、現状では駄目ってことで。
>bregexp.dll を使うようにすれば解決するかと思います。

無知ですみません。
bregexp.dll とはどのようなもので、どこにあるのでしょうか?
上記の件、解決するのならば、是非使いたいです。

[ ]
RE:04448 強調表示の仕様について。No.04451
アルビレオ さん 99/11/19 13:37
 
こんにちは。アルビレオと申します。

>無知ですみません。
>bregexp.dll とはどのようなもので、どこにあるのでしょうか?
>上記の件、解決するのならば、是非使いたいです。

ここにあります。
http://www.hi-ho.ne.jp/babaq/index.html

秀丸で使うにはArimacさんのBRegIfが必要です。
http://www.urban.ne.jp/home/arimac/
(秀丸のマクロライブラリにはなぜか入っていませんね?)


しかし、「一致文字列の一部のみを強調」というようなことは
検索ルーチンの変更だけでできるとは思えません。
強調表示の仕様を変える必要があるはずです。

つよきちさんの案のような方法では、事実上の文字列置換のような
ものなので、1文字入力するたびにこのような処理をおこなうのは
難しいと思います。

つよきちさんの案から「表示文字列」の項目はなしにして、
「2つの\fではさまれた部分を強調」という方法なら仕様の上では
可能な気もしますが、秀丸の\fの処理は
「検索にマッチした文字列に対してさらに検索をおこなう」
という方法なので処理速度の点で現実的ではないと思います。

なにか速度をそれほど犠牲にせずに処理する方法があれば
私もそういう機能がほしいことはたまにあるのですが。

[ ]
RE:04451 強調表示の仕様について。No.04452
える さん 99/11/19 14:15
 
>こんにちは。アルビレオと申します。
>>bregexp.dll とはどのようなもので、どこにあるのでしょうか?
>>上記の件、解決するのならば、是非使いたいです。
>ここにあります。
>秀丸で使うにはArimacさんのBRegIfが必要です。
>しかし、「一致文字列の一部のみを強調」というようなことは
>検索ルーチンの変更だけでできるとは思えません。

それができるのが BRegExp のヨイよころでは ?

lookahead 構文を利用することで検索文字列の前後に含んでほしい文字列が設定でき
ますので、正規表現全体に対して、強調表示したい部分を部分的に指定できます。
perldoc perlre を lookahead で検索して見つかったあたりを読まれるとよいと思い
ます。

[ ]
RE:04452 強調表示の仕様について。No.04453
つよきち さん 99/11/19 17:13
 

アルビレオさん、えるさん、こんにちわ
コメントありがとうございます。

perlre 読んでみました。
正規表現、確かに強力ですね(^^)

しかし

>perldoc perlre を lookahead で検索して見つかったあたりを読まれるとよいと思
>います。

この項がみつけられませんでした。

>lookahead 構文を利用することで検索文字列の前後に含んでほしい文字列が設定で
>きますので、正規表現全体に対して、強調表示したい部分を部分的に指定できます。

そもそもひっかかるのですが、正規表現を駆使して文字列を検索できたとして、その
検索文字列の1部分を強調表示させるメタ文字(?)って
存在するのでしょうか?、それとも正規表現の記述に、えるさんのおっしゃるlookah
eadというものが使用できるのでしょうか?

アルビレオさんのおっしゃるとおり、秀丸自身は、正規表現にてマッチしたものは、
それ全てを強調してしまうと思うのですが。

#そもそも私は何か大きな勘違いをしているのか?(^^;;;)

[ ]
RE:04452 強調表示の仕様について。No.04460
アルビレオ さん 99/11/19 19:15
 
>それができるのが BRegExp のヨイよころでは ?
>
>lookahead 構文を利用することで検索文字列の前後に含んでほしい文字列が設定で
>きますので、正規表現全体に対して、強調表示したい部分を部分的に指定できます。
>perldoc perlre を lookahead で検索して見つかったあたりを読まれるとよいと思
>います。

大変申し訳ありません。

Perlは使ったことがないもので、憶測で書いてしまいました。
まさか検索文字列の中でそこまで複雑なことができるとは思っていませんでした。

[ ]
RE:04453 強調表示の仕様について。No.04461
える さん 99/11/19 19:26
 
>>perldoc perlre を lookahead で検索して見つかったあたりを読まれるとよいと思
>います。
>この項がみつけられませんでした。

へんですね ? 何度か出てきているはずなんですが

>>lookahead 構文を利用することで検索文字列の前後に含んでほしい文字列が設定で
>きますので、正規表現全体に対して、強調表示したい部分を部分的に指定できます。
>そもそもひっかかるのですが、正規表現を駆使して文字列を検索できたとして、そ
>の検索文字列の1部分を強調表示させるメタ文字(?)って

えーっと、具体的に書くと

m/hilighting(?= here)/

という perl の正規表現では "hilighting here" という部分に「マッチ」し、「マ
ッチした全体」としては "hilighting" を返します。
これが簡単な lookahead 構文の例で、秀丸の強調表示にそのまんま応用できます。

look a head というと、構文解析とかで複数とおり有り得る選択肢を優先的にしたり
限定したりするのに使われていると思いますが、それと似たようなもんです。

[ ]
RE:04461 強調表示の仕様について。No.04471
Arimac さん 99/11/19 23:51
 
>>>perldoc perlre を lookahead で検索して見つかったあたりを読まれるとよいと
>思います。
>>この項がみつけられませんでした。
>
>へんですね ? 何度か出てきているはずなんですが
>
>>>lookahead 構文を利用することで検索文字列の前後に含んでほしい文字列が設定
>できますので、正規表現全体に対して、強調表示したい部分を部分的に指定できます。
>>そもそもひっかかるのですが、正規表現を駆使して文字列を検索できたとして、そ
>の検索文字列の1部分を強調表示させるメタ文字(?)って
>
>えーっと、具体的に書くと
>
>m/hilighting(?= here)/
>
>という perl の正規表現では "hilighting here" という部分に「マッチ」し、「マ
>ッチした全体」としては "hilighting" を返します。
>これが簡単な lookahead 構文の例で、秀丸の強調表示にそのまんま応用できます。
>
>look a head というと、構文解析とかで複数とおり有り得る選択肢を優先的にした
>り限定したりするのに使われていると思いますが、それと似たようなもんです。

(?=regexp)では、つよきちさんのやりたい
「CAAA」の時だけ「AAA」を強調するというのは出来ないのでは?
例えば「(?=C)AAA」としてもマッチしませんが?
どうも(?=regexp)は後ろにしか使えないみたいです。

#やはりマクロライブラリに登録しなければならないか(^^;
#マクロじゃないんですが・・・

#上記の様な場合にも対応した「絞り込み検索機能」を
#付けたいなぁとは思っているのですが(^^;

[ ]
RE:04471 強調表示の仕様について。No.04472
える さん 99/11/20 00:36
 
>>>>perldoc perlre を lookahead で検索して見つかったあたりを読まれるとよいと
>思います。
>>>この項がみつけられませんでした。
>>>>lookahead 構文を利用することで検索文字列の前後に含んでほしい文字列が設定
>できますので、正規表現全体に対して、強調表示したい部分を部分的に指定できます。
>>>そもそもひっかかるのですが、正規表現を駆使して文字列を検索できたとして、
>その検索文字列の1部分を強調表示させるメタ文字(?)って
>>えーっと、具体的に書くと
>>m/hilighting(?= here)/
>>という perl の正規表現では "hilighting here" という部分に「マッチ」し、
>「マッチした全体」としては "hilighting" を返します。
>>これが簡単な lookahead 構文の例で、秀丸の強調表示にそのまんま応用できます。
>(?=regexp)では、つよきちさんのやりたい
>「CAAA」の時だけ「AAA」を強調するというのは出来ないのでは?

前方でしたっけ、前方を指定するときは lookbehind ですから

CAAA に対して AAA を取り出すなら m/(?<=C)AAA/ でしょうか。

# マニュアル読んでね (苦笑

[ ]
RE:04472 強調表示の仕様について。No.04473
Arimac さん 99/11/20 01:08
 
>>>>>perldoc perlre を lookahead で検索して見つかったあたりを読まれるとよい
>と思います。
>>>>この項がみつけられませんでした。
>>>>>lookahead 構文を利用することで検索文字列の前後に含んでほしい文字列が設
>定できますので、正規表現全体に対して、強調表示したい部分を部分的に指定でき
>ます。
>>>>そもそもひっかかるのですが、正規表現を駆使して文字列を検索できたとして、
>その検索文字列の1部分を強調表示させるメタ文字(?)って
>>>えーっと、具体的に書くと
>>>m/hilighting(?= here)/
>>>という perl の正規表現では "hilighting here" という部分に「マッチ」し、
>「マッチした全体」としては "hilighting" を返します。
>>>これが簡単な lookahead 構文の例で、秀丸の強調表示にそのまんま応用できます。
>>(?=regexp)では、つよきちさんのやりたい
>>「CAAA」の時だけ「AAA」を強調するというのは出来ないのでは?
>
>前方でしたっけ、前方を指定するときは lookbehind ですから
>
>CAAA に対して AAA を取り出すなら m/(?<=C)AAA/ でしょうか。
>
># マニュアル読んでね (苦笑

マニュアルは読みました。
perlre.1.txt(日本語)ですが?
「(?<=regexp)」というのは書いてありませんでした。
それとBREGEXP.DLL(99/05/13版)では使えませんでした・・・
最近のBREGEXP.DLLで使えるようになったのでしょうか?

[ ]
RE:04472 強調表示の仕様について。No.04474
Arimac さん 99/11/20 01:21
 
>>>>>perldoc perlre を lookahead で検索して見つかったあたりを読まれるとよい
>と思います。
>>>>この項がみつけられませんでした。
>>>>>lookahead 構文を利用することで検索文字列の前後に含んでほしい文字列が設
>定できますので、正規表現全体に対して、強調表示したい部分を部分的に指定でき
>ます。
>>>>そもそもひっかかるのですが、正規表現を駆使して文字列を検索できたとして、
>その検索文字列の1部分を強調表示させるメタ文字(?)って
>>>えーっと、具体的に書くと
>>>m/hilighting(?= here)/
>>>という perl の正規表現では "hilighting here" という部分に「マッチ」し、
>「マッチした全体」としては "hilighting" を返します。
>>>これが簡単な lookahead 構文の例で、秀丸の強調表示にそのまんま応用できます。
>>(?=regexp)では、つよきちさんのやりたい
>>「CAAA」の時だけ「AAA」を強調するというのは出来ないのでは?
>
>前方でしたっけ、前方を指定するときは lookbehind ですから
>
>CAAA に対して AAA を取り出すなら m/(?<=C)AAA/ でしょうか。
>
># マニュアル読んでね (苦笑

最新のBREGEXP.DLL(99/10/16版)でも使えませんでした。
BREGEXP=perlではないので最新のperlreに載ってても
使えるとは限らないです(;_;)

[ ]
RE:04472 強調表示の仕様について。No.04475
Arimac さん 99/11/20 01:46
 
>>>>>perldoc perlre を lookahead で検索して見つかったあたりを読まれるとよい
>と思います。
>>>>この項がみつけられませんでした。
>>>>>lookahead 構文を利用することで検索文字列の前後に含んでほしい文字列が設
>定できますので、正規表現全体に対して、強調表示したい部分を部分的に指定でき
>ます。
>>>>そもそもひっかかるのですが、正規表現を駆使して文字列を検索できたとして、
>その検索文字列の1部分を強調表示させるメタ文字(?)って
>>>えーっと、具体的に書くと
>>>m/hilighting(?= here)/
>>>という perl の正規表現では "hilighting here" という部分に「マッチ」し、
>「マッチした全体」としては "hilighting" を返します。
>>>これが簡単な lookahead 構文の例で、秀丸の強調表示にそのまんま応用できます。
>>(?=regexp)では、つよきちさんのやりたい
>>「CAAA」の時だけ「AAA」を強調するというのは出来ないのでは?
>
>前方でしたっけ、前方を指定するときは lookbehind ですから
>
>CAAA に対して AAA を取り出すなら m/(?<=C)AAA/ でしょうか。
>
># マニュアル読んでね (苦笑

ちなみにマニュアルはここ
http://www.att.or.jp/perl/man/perlre.1.html
にあります。

[ ]
RE:04471 DLLの置き場所No.04476
アルビレオ さん 99/11/20 13:10
 
アルビレオです。

ちょっと脱線ですが、

>#やはりマクロライブラリに登録しなければならないか(^^;
>#マクロじゃないんですが・・・

田楽DLLもここにありますし・・・
こちらはマクロの延長のようなものですが。

おそらく、マクロからDLLをアクセスできるバージョンが
正式なものになれば、DLLライブラリも用意していただけると
おもいます。

それまでの仮住まいとして置いておくぐらいは
いいのではないでしょうか。

[ ]
RE:04474 強調表示の仕様について。No.04477
える さん 99/11/20 16:59
 
>最新のBREGEXP.DLL(99/10/16版)でも使えませんでした。
>BREGEXP=perlではないので最新のperlreに載ってても
>使えるとは限らないです(;_;)

BregExp は perl 互換の正規表現が使える DLL としか
知らないのです、失礼しました。

個人的には perl.dll や perlcore.dll をそのまま使うのが確実なんで、そうしてま
すから。
# でも、わざわざ2年ちかく前の実装のマニュアル引っ張り出さなくてもいいんじゃ?

[ ]
RE:04477 強調表示の仕様について。No.04478
Arimac さん 99/11/20 23:10
 
>>最新のBREGEXP.DLL(99/10/16版)でも使えませんでした。
>>BREGEXP=perlではないので最新のperlreに載ってても
>>使えるとは限らないです(;_;)
>
>BregExp は perl 互換の正規表現が使える DLL としか
>知らないのです、失礼しました。
>
>個人的には perl.dll や perlcore.dll をそのまま使うのが確実なんで、そうして
>ますから。
># でも、わざわざ2年ちかく前の実装のマニュアル引っ張り出さなくてもいいんじゃ?

perlの正規表現ルーチンは独立しているんですか・・・
BRegIfはソース付きなので直接使えるように改造してみませんか?(^^;

#わざわざ探し出した訳ではなくそれしか知らないのです。
#perl使った事無いし・・・(^^;

[ ]
RE:04476 DLLの置き場所No.04479
Arimac さん 99/11/20 23:12
 
>アルビレオです。
>
>ちょっと脱線ですが、
>
>>#やはりマクロライブラリに登録しなければならないか(^^;
>>#マクロじゃないんですが・・・
>
>田楽DLLもここにありますし・・・
>こちらはマクロの延長のようなものですが。
>
>おそらく、マクロからDLLをアクセスできるバージョンが
>正式なものになれば、DLLライブラリも用意していただけると
>おもいます。
>
>それまでの仮住まいとして置いておくぐらいは
>いいのではないでしょうか。

昨晩速攻で登録しました。
でもダウンロード出来るようになるのは多分
来週連休明け以降ではないでしょうか?
私のHPのと同じ物ですが・・・(^^;

[ ]
RE:04461 強調表示の仕様について。No.04494
つよきち さん 99/11/22 11:57
 
アルビレオさん、えるさん、Arimacさん
コメントありがとうございます。
(まとめレスで失礼致します。)
BREGEXP.DLL、Perl、正規表現の話題、大変参考になりました。

>m/hilighting(?= here)/
>
>という perl の正規表現では "hilighting here" という部分に「マッチ」し、「マ
>ッチ>した全体」としては "hilighting" を返します。
>これが簡単な lookahead 構文の例で、秀丸の強調表示にそのまんま応用できます。

BREGEXP.DLLを登録していろいろ試しましたが、どうも強調しないようです。

しかしBREGEXP.DLL、いろいろ便利そうですし。このまま使っていこうと思います。

上記仕様、現段階ではできないようですが、将来実現できればと思います。

[ ]