後方不一致検索の強調No.05024
ぎんNaN さん 10/01/21 14:39
 
後方不一致検索で本体パターンが\nで終了している場合、検索結果を強調したとき、
後方不一致がなかったようにハイライトされます(あくまで表示だけ)。

---
foo\n(?!bar)


...foo
baz..foo
bar



...|foo|
baz..|foo|
bar

と表示される

ご確認いただけるでしょうか。

秀丸エディタ 32bit 8.00 beta 36 / HmJre.dll V3.06

[ ]
RE:05024 後方不一致検索の強調No.05025
秀丸担当 さん 10/01/21 15:03
 

>後方不一致検索で本体パターンが\nで終了している場合、検索結果を強調したとき、
>後方不一致がなかったようにハイライトされます(あくまで表示だけ)。

手順通りにして確認することができました。
ありがとうございます。

調べてみたところ、もともと検索文字列の強調は複数行には対応していなくて、
強調のための検索対象は一行ぶん(改行まで)になっています。
多くの場合、複数行にヒットするようなパターンの場合は強調されないことにな
って、これは仕様なのですが、後方不一致の場合は複数行が対象なのにヒット部
分は一行目だけになるのでこの矛盾が起きるようです。

強調の検索対象が一行ぶんというのを変えると対処できると思いますが、パフ
ォーマンスの低下につながると思うので、できればこのままとさせていただきた
いところです。
申し訳ありません。

[ ]
RE:05025 後方不一致検索の強調No.05026
ぎんNaN さん 10/01/21 15:09
 
後方一致に場合にはそもそもハイライトされないので、ハイライトしないのもありか
なと思い書かせていただきました。
本来ヒットしないはずの物が誤表示されるよりはいいのではないかと。
検討の程よろしくお願いいたします。

[ ]
RE:05026 後方不一致検索の強調No.05027
秀丸担当 さん 10/01/21 16:09
 

>後方一致に場合にはそもそもハイライトされないので、ハイライトしないのもありか
>なと思い書かせていただきました。
>本来ヒットしないはずの物が誤表示されるよりはいいのではないかと。
>検討の程よろしくお願いいたします。

xxx\n(?!xxx) という1つの書き方限定であればそういう判断をしてもいいかも
しれないですが、例えば xxx([x\nx]|xx)(?!xxx) というような書き方だったり
しても同じケースになると思います。
複雑なパターンで HmJre.dll と全く同じ判定を秀丸エディタ本体側でも確かに
判定しなければならないということになると、厳しいものがあるかもしれないで
す。

あるいは \n を含んでいたら全て強調なしということも考えられますが、ずっと
以前は\nがあったら強調無しになっていたのですが、要望でV5.xxの頃に行末の
改行を含んでも強調できるように修正していました。
これができなくなると、また困るという人もいるかもしれません。

両方に都合のいい策として、複雑な解析はせず、検索文字列に \n と (?! が含
まれているという場合に限って強調しないということにすると、強調できないパ
ターンは増えても V5.xx の頃の要望は満たされるかもしれないと思いますが…
そういう方向で検討してみます。

[ ]
RE:05027 後方不一致検索の強調No.05029
秀丸担当 さん 10/01/21 17:27
 

β37を出してしまいましたが、こちらの件はまだ修正されていないです。
次のβ版で修正させていただきます。

[ ]