後藤@太陽計測です >>>>> at Sat, 14 Nov 1998 17:24:34 +0900 >>>>> 出沢 <dezawa / miya.fujifilm.co.jp> said, 出沢> ruby前提で考えていたので、こんな感じで行けるのではと思って 出沢> たのですが。まだ良く吟味はしていませんが、 出沢> /(^|\s)(\w+?\e\$B.*?\e\(B)(\s|$)/ して、 出沢> ascii = $` ; encode = $2, right =$' して 出沢> right を再帰でやっつける 「こんな感じ」ということなので、深く突っ込んでもしょーがないですが、 \w+? がまずいよーな。 以下はどーなります?(あまりいい例ではないですが) 1. "漢字 や ひらがな" 2. "漢字 and ひらがな" 3. "漢字andひらがな" 以下のようになって欲しいのですが(foldingは省略) 1. "=?ISO-2022-JP?B?GyRCNEE7ehsoQiAbJEIkZBsoQiAbJEIkUiRpJCwkShsoQg==?=" 2. "=?ISO-2022-JP?B?GyRCNEE7ehsoQg==?= and =?ISO-2022-JP?B?GyRCJFIkaSQsJEobKEI=?=" 3. "=?ISO-2022-JP?B?GyRCNEE7ehsoQmFuZBskQiRSJGkkLCRKGyhC?=" 上記コードはエンコードすべき部分を探す観点かと思いますが、 たぶん、ASCIIで良い部分を探すほうが確実だと思います。 #さきに紹介したアルゴリズムもそうなのですが 「こんな感じ」ではありますが、エンコードすべき文字列はESC$Bで始まるも のばかりじゃないのもちょっと気になる。 特に1が(略記してますが) "=?JP?B?漢字?= =?JP?B?や?= =?JP?B?ひらがな?=" となってしまうとデコード時に空白がなくなっちゃいますけど、 どーでしょー あと、ASCIIを探す、とすると漢字バイト列が障害になるのですが、 漢字をEUCなりに変換してからなら、うまくいかないかしらん? /(^|\s+)\w+(\s+|$)/ ecncode=$`; right=$'; ちなみに上記は Mewのやりかたとほぼ等価です Mewでは更に\wではなく[\t -~]としている点が違いますが (mew-header-split-string (in mew-bq.el)参照)。 #Emacs(mule)上のregexpでは漢字1文字が確実に . でマッチする #(1文字として扱える)からこそできる方法ではありますが。 先の3例をmew-header-split-stringにかけると 1. ("漢字 や ひらがな") ... 1つ 2. ("漢字" " and " "ひらがな") ... 3つ 3. ("漢字andひらがな") ... 1つ となり、結果、2以外は「まとめてエンコード」とするわけです。 --- Regards, Shun-ichi Goto <gotoh / taiyo.co.jp> R&D Group, TAIYO Corp., Tokyo, JAPAN