正規表現 [^x]$ のような形式の不具合No.06766
はしもと さん 05/03/17 16:50
 
皆様はじめまして。はしもとです。

秀丸エディタ5.0β6 において、以下の現象に遭遇しましたので、報告させていただ
きます。

HMJREを使った正規表現検索において、
[^x]$
(行末のx以外の文字にマッチ)
の検索を行った場合に、本来マッチさせたい文字以外に、
全ての行末と全ての全角文字にマッチしてしまうようです。

確認お願いします。

[ ]
RE:06766 正規表現 [^x]$ のような形式のNo.06767
秀まるお さん 05/03/17 17:05
 
 調べてみたら再現しました。半分は仕様ですが半分はバグのようです。

 [^x]と指定した場合、それは'x'以外のすべての文字にマッチしまして、実は、
改行文字も含めてマッチしてしまいます。なので、行末の改行にもマッチしてし
まいます。それはそれで仕様です。JRE32.DLLでも同じ動作です。

 全角文字にマッチするのもこれまた仕様でして、JRE32.DLLでもそうです。

> 全ての行末と全ての全角文字にマッチしてしまうようです。

 行末じゃない所の全角文字にマッチするのはバグのようです。さっそく修正さ
せていただきます。

[ ]
RE:06767 正規表現 [^x]$ のような形式のNo.06768
秀まるお さん 05/03/17 17:20
 
 バグってる箇所が今修正できました。

 とりあえずですが、正規表現を

 [^x\n -K]
       ↑ ↑
       | +−ShiftJIS文字コード表の最後の文字(0xFC4B)
       |
       +− 全角空白


 とすればバグも出ないので、それで回避して欲しいです。

 0xFC4Bの文字は、Windowsの文字コード表から引っ張ってくることが出来ます。

[ ]
RE:06767 正規表現 [^x]$ のような形式のNo.06770
はしもと さん 05/03/17 17:31
 
> [^x]と指定した場合、それは'x'以外のすべての文字にマッチしまして、実は、
>改行文字も含めてマッチしてしまいます。なので、行末の改行にもマッチしてし
>まいます。それはそれで仕様です。JRE32.DLLでも同じ動作です。

言われてみれば確かにその通りでした。
多少勘違いをしていたようです。

勘違いの原因は、
^.*[^x]$
のような形式で強調表示を行った場合の挙動が、これまでと異なっていることです。

これまで(及びJRE32.DLL)では、検索ではマッチするものの、強調表示はされない。
という状態でしたが、
HMJRE.DLL 1.53 では、強調表示も行われるようになっています。

一応、その点についても、確認いただければ幸いです。


>> 全ての行末と全ての全角文字にマッチしてしまうようです。
>
> 行末じゃない所の全角文字にマッチするのはバグのようです。さっそく修正さ
>せていただきます。

よろしくお願いします。

[ ]
RE:06770 正規表現 [^x]$ のような形式のNo.06771
秀まるお さん 05/03/17 18:05
 
 つまり、正規表現パターン中の問題の箇所を洗い出していただく課程でそうな
ってしまったってことで、つまり、そこまで詳しく調べていただいたということ
で、大変ありがとうございます。

 秀丸担当にお願いして(秀丸自体はあまり修正されてないみたいだけど)今日
中にまたバージョンアップさせていただきます。

[ ]