改行にマッチするのは何故でしょうNo.20563
nari さん 05/12/07 16:18
 
 下の文章を正規表現「^[^ -~。-゚]*$」を使って
検索すると「が以下のようになる。」の行がハイライト
表示されます。
#改行はハイライトされません。
 同じ正規表現で置換後文字に何も指定しないと、改行文字
が削除されてしまいます。
 この正規表現は「全角文字」を表現しようとしているの
ですが、なぜ改行コードがマッチしてしまうのでしょうか。
 秀丸5.11 HMJRE.DLLを使用しています。

****文章****
88889999zzzzkkああ5599
55るるるる555
が以下のようになる。
88889999zzzzkkああ559955るるるる555
************
****置換後**
88889999zzzzkkああ559955るるるる55588889999zzzzkkああ559955るるるる555 

[ ]
RE:20563 改行にマッチするのは何故でしょNo.20564
ENCODINGSHIFTJIS さん 05/12/07 17:43
 
^[^ -~。-゚\n]+$
ですと、改行は残ります、0文字にもマッチするのは難しい

[ ]
RE:20563 改行にマッチするのは何故でしょNo.20565
秀丸担当 さん 05/12/07 17:48
 

> 下の文章を正規表現「^[^ -~。-゜]*$」を使って
>検索すると「が以下のようになる。」の行がハイライト
>表示されます。
>#改行はハイライトされません。
> 同じ正規表現で置換後文字に何も指定しないと、改行文字
>が削除されてしまいます。
> この正規表現は「全角文字」を表現しようとしているの
>ですが、なぜ改行コードがマッチしてしまうのでしょうか。
> 秀丸5.11 HMJRE.DLLを使用しています。

とりあえず、検索でヒットしても改行がハイライトされないのは仕様とさせてく
ださい。「.\n.」で検索した場合、どこもハイライトされません。

上記のパターンで改行がヒットしてしまうのは、「[^a]」というような感じの場
合、「a」以外ということで改行文字がヒットしてしまうためです。
「[^a\n]*」という感じにして改行文字を含まないようにするか、「[^a]*?$」と
すると行末$がヒットするまでの最短となるので、結果的に改行を含めず検索で
きました。
「*?」については、HmJre.hlpのものぐさ指定を参照してみてください。

[ ]