Unicodeで保存されたファイルに対する正規No.26198
緒方聡 さん 09/02/14 15:39
 
 nüe

上記の文字列が保存されたファイルに対して

 [a-zü]{3}

という正規表現で検索した場合、そのファイルが
欧文であればヒットしますが、Unicode の場合は
ヒットしません。

環境は以下の通りです。

秀丸: 7.10
HmJre.dll: 1.92

[ ]
RE:26198 Unicodeで保存されたファイルにNo.26199
緒方聡 さん 09/02/14 15:41
 
> nüe
> [a-zü]{3}

ü は実際には Unicode は 0x00FC です。

[ ]
RE:26199 Unicodeで保存されたファイルにNo.26200
緒方聡 さん 09/02/14 15:58
 
欧文でも以下のケースでダメでした。

 nü

上記に対して

 [a-zü]{1}

という正規表現+単語検索を行うと、
1 文字目の n の部分にマッチしてしまいます。

[ ]
RE:26200 Unicodeで保存されたファイルにNo.26201
Iranoan さん 09/02/14 17:50
 
 緒方聡さん今日は、Iranoan です。
>  nüe
>
> 上記の文字列が保存されたファイルに対して
>
>  [a-zü]{3}
>
> という正規表現で検索した場合、そのファイルが
> 欧文であればヒットしますが、Unicode の場合は
> ヒットしません。
 Unicode に対応していないのか? とも思ったのですが、不思議な動きをしま
すね。「[a-zü]+」で検索すると、上記の例では「n」「üe」「e」
の順にヒットし、Unicode に対応していない訳でもなさそうですし、詳細は秀
丸担当さんにお聞きしないと解らないですね。
 現状では、「(ü|[a-z]){3}」で代用できそうですが、どうでしょう?

>  nü
>
> 上記に対して
>
>  [a-zü]{1}
>
> という正規表現+単語検索を行うと、
> 1 文字目の n の部分にマッチしてしまいます。
 こちらは仕様でしょう。
 検索のヘルプ部分に記載がありませんが、秀丸エディタの単語とは、単語と
は A〜Z, a〜z, _ で構成される文字列です。更に数字が、「単語の検索で
"abc"を検索する時、"abc123"にはヒットさせない」に依存します。
 ##\w あたりの記述が説明になるのかな?
 この辺りは解りにくいので、単語の区切りについて、過去にも要望が出た事
は有ります。
http://www.maruo.co.jp/hidesoft/2/x25916_.html#25933
http://www.maruo.co.jp/hidesoft/2/x25703_.html#25707

[ ]
RE:26201 Unicodeで保存されたファイルにNo.26202
緒方聡 さん 09/02/14 20:16
 
Iranoan さん、こんばんは。

> 現状では、「(ü|[a-z]){3}」で代用できそうですが、どうでしょう?

代用できました。
ありがとうございます。

> こちらは仕様でしょう。
... snip ...
>http://www.maruo.co.jp/hidesoft/2/x25916_.html#25933
>http://www.maruo.co.jp/hidesoft/2/x25703_.html#25707

参考にさせてもらいました。
確かに欧文を扱う場合の単語単位は気になりますね。

欧文の範囲で TOUPPER と tolower が可能になると
さらによいですね。

[ ]
RE:26202 Unicodeで保存されたファイルにNo.26206
秀まるお2 さん 09/02/16 11:32
 
 ユニコ−ド文字を[...]中に使うケースですが、調べてみたら、HmJre.dll側の
バグでした。大変失礼しました。

 一応、ユニコードの文字コードが0x100以上になるケースではテストしてたん
ですけど、0x80〜0xFFの文字についてテスト不足でして、うまく動作してません
でした。

 ということで、これについてはHmJre.dllの次のバージョン(V1.94)にて対応
させていただきますが、一応秀丸エディタのV7系では添付しないつつも、秀丸
メールの次のバージョンおよび秀丸エディタのV8系にてバグ修正されたHmJre.
dllを添付予定ということで、その辺よろしくお願いします。

[ ]
RE:26206 Unicodeで保存されたファイルにNo.26210
秀まるお2 さん 09/02/16 14:00
 
 ついでですが(テストのためもあって)、秀丸エディタの文字列定数の中で使
える「\uXXXX」もサポートさせていただきます。

 正規表現で、例えば

 [\u00A1-\u0292]

 のように書くと、たしかにユニコードの文字コードで文字コードを比較してマ
ッチさせるようにします。

 例えば中国語も含めた漢字全般にヒットさせるには、

 [\u4E00-\uFA2D]

 のように書けばいいとかって風になります。

 次のHmJre.dllのV1.94にて対応します。

[ ]
RE:26206 Unicodeで保存されたファイルにNo.26211
秀まるお2 さん 09/02/16 14:05
 
 それと1つ間違いがありました。

 V1.94は既に秀丸メールに添付して配布してしまってましたので、次のバージ
ョンはV1.95とさせていただきます。

 大変失礼しました。

[ ]
RE:26211 Unicodeで保存されたファイルにNo.26217
緒方聡 さん 09/02/17 10:58
 
ありがとうございます。報告しがいがありました。

当面は Iranoan さんに教えていただいた回避方法で
しのいでいきたいと思います。

[ ]