正規表現における単語文字No.21824
colder さん 06/09/21 17:01
 
秀丸の正規表現において、\w及び\<,\>において、単語文字と認識されるのは、英文
字と_だけですが、PerlやRubyなどの正規表現と同じく、数字も単語文字と認識する
ように、仕様を変更(もしくはメタ文字を追加)していただけないでしょうか。
秀丸内でも、単語の検索時には、数字は単語文字であるかのように動作しており、機
能が統一されていないように感じます。

[ ]
RE:21824 正規表現における単語文字No.21830
秀まるお2 さん 06/09/22 10:37
 
 \wで数字の固まりが単語扱いされないのは、そもそもの山田和夫さんが作成さ
れたJRE.DLLおよびJRE32.DLLがそういう仕様になっていたからのようです。

 HmJre.dllを作成する時に、JRE32.DLLとの互換性を重視して、そういう仕様に
したんだと思います。それを今さら仕様変更してしまうと、いろいろ問題が出て
くると思います。

 しいて対応するとしたら、新しいメタ文字を追加するってことになるかと思い
ますけど、それはそれで、具体的にどういう風にしたらいいかよく分からないで
すが…。何かいいアイデアがあれば教えて欲しいです。

[ ]
RE:21830 正規表現における単語文字No.21835
白雲斎 さん 06/09/22 13:24
 
こんにちは 秀まるお2 さん、白雲斎です。

> \wで数字の固まりが単語扱いされないのは、そもそもの山田和夫さんが作成さ
>れたJRE.DLLおよびJRE32.DLLがそういう仕様になっていたからのようです。
>
> HmJre.dllを作成する時に、JRE32.DLLとの互換性を重視して、そういう仕様に
>したんだと思います。それを今さら仕様変更してしまうと、いろいろ問題が出て
>くると思います。
>
> しいて対応するとしたら、新しいメタ文字を追加するってことになるかと思い
>ますけど、それはそれで、具体的にどういう風にしたらいいかよく分からないで
>すが…。何かいいアイデアがあれば教えて欲しいです。

・ \w は [0-9A-Za-z_]+ と同意
・ \f方式のダグ付き正規表現を無効(\0 \1 ... の定義を明確にする為)
・ \s や \d の追加
・ JRE.DLL、JRE32.DLLの互換性を捨てる

とする「HmJre2.dll(仮名)」を作成、同梱する。
必要な人は「HmJre2.dll」の使用を設定する。
1、2年後を目処に「HmJre2.dll」が標準となることを啓蒙する。
なんて・・・。
却下されるのを承知で書いています。

[ ]
RE:21830 正規表現における単語文字No.21844
colder さん 06/09/22 22:48
 
> HmJre.dllを作成する時に、JRE32.DLLとの互換性を重視して、そういう仕様に
>したんだと思います。それを今さら仕様変更してしまうと、いろいろ問題が出て
>くると思います。
>
> しいて対応するとしたら、新しいメタ文字を追加するってことになるかと思い
>ますけど、それはそれで、具体的にどういう風にしたらいいかよく分からないで
>すが…。何かいいアイデアがあれば教えて欲しいです。

文字クラス内でのみ、\wを[a-zA-Z0-9_]と同等する。
単語境界を表すメタ文字\yを追加。
このあたりなら、仕様変更の影響はあまりないんじゃないかな?

[ ]
RE:21844 正規表現における単語文字No.21851
秀まるお2 さん 06/09/25 10:41
 
 下手に独自仕様を追加するとさらにややこしい話になので、しいてやるとした
ら、Perl互換モードみたいなのを用意するのが将来的にはいいのでしょうかね。

 例えば正規表現パターンの先頭に"(?#perl)"を入れたらPerl互換モードになる
っていうHmJre.dll側の仕様を用意して、秀丸エディタ側の設定で、例えば正規
表現をPerl互換にするかどうかの指定を用意して、それをONにした場合は自動的
に(?#perl)が挿入された形でHmJre.dllが呼び出されるとか。

 そうすれば既存のマクロも正常動作するし、みんなハッピーになるかなぁと思
ったりします。

[ ]