DTPab

印刷やデザイン、アドビ製アプリやスクリプトなど、雑多な技術ブログ

OS間で気をつけるべき正規表現

【訂正 2018.9.4】
正規表現の書き間違いを訂正しました(赤字部分)。


今回はスクリプトからちょっと離れまして、正規表現のお話です。
僕の勤める会社では、Mac環境とWin環境の両方があり、OSを跨いで作業することもしばしばあります。そんなときに、用意した正規表現スタイルがMacでは適用されるのにWinでは適用されない(もしくはその逆)ということがありました。割と知られているとは思うのですが、注意喚起も含めてご報告です。

段落スタイルを作成し、ひとつめの正規表現スタイルに「U+2212のマイナス記号」と「U+301Cの波ダッシュ」の文字カラーをマゼンタにするもの、ふたつめに「U+FF0Dのマイナス記号」と「U+FF5Eの波ダッシュ」の文字カラーをシアンにするものを登録します。
これを実際に適用すると下図のようになります。

f:id:uske_S:20170612195413p:plain

このように見た目はほとんど変わらない文字ですが、正規表現ではしっかり分けられています。
マイナス記号は大抵「マイナス」と打って変換しますし、波ダッシュは大抵Shiftキーを押しながら「^」キーを押すと思います。そうすると、Macでは「U+2212(マイナス記号)」と「U+301C(波ダッシュ)」が、Winでは「U+FF0D(マイナス記号)」と「U+FF5E(波ダッシュ)」が入力されることになるのですが、正規表現スタイルにそのように変換した文字そのものを登録してしまうと、どちらか一方の「マイナス記号」と「波ダッシュ」にしか正規表現スタイルが適用されなくなります。

例えばこのGIFアニメーションのようになります。
先ほどの段落スタイルから、ひとつめの正規表現スタイルを削除した状態で、「マイナス」と入力して変換しています。

f:id:uske_S:20170613195412g:plain

ご覧のように、Macでは簡単にU+FF5EU+FF0Dのマイナス記号が入力できないため、油断していると正規表現スタイルが適用されないのです(GIFでは、マイナス記号を「\x{ff5e}\x{ff0d}」に置換し、実際に正規表現スタイルが適用されるところまで見せています)。

自分でこういった正規表現スタイルを登録する場合は、マイナス記号なら「[\x{2212}\x{ff0d}]」、波ダッシュなら「[\x{301c}\x{ff5e}]」といったふうに登録しています。

…で、他の人が作ったデータでもこれが自社内で作ったデータならまだいいんです。最悪は聞けばいいだけなので。
でもこれが他所で作られたデータだったりすると、正規表現スタイルを気にしながら作業しなければならず、なかなか神経を使います。

f:id:uske_S:20170612203145p:plain

そこで、僕はこんなスクリプトを使っています。
段落スタイルの中に「−」や「〜」が入っていれば、この一覧に「〓」が表示されます。他にも、先頭文字スタイル・先頭行スタイル・正規表現スタイルが一つでも登録されていれば、それが分かるようになっています(先・行・正・〓が、各スタイル名の前に並びます)。
図では「マイナス」という名前の段落スタイルに「マイナス記号」か「波ダッシュ」を使っていることが分かります。これ自体はフローティングパネルのように表示させたまま作業ができますので、入稿データを修正する際の一つのチェック機能として使っています。

コードをそのまま載せようかとも思ったのですが、全体で380行くらいありここに載せても冗長で見づらいので、もくもく会の資料としてアップしようと思っています。
気になるからコードが今すぐに見たい! という方は、Twitterでご連絡いただくか、コメントにてご連絡ください。GoogleドライブかDropboxか、お見せできる形で共有したいと思います。

というわけで、OS間で気をつけるべき正規表現(とそれを気にするスクリプト)でした。
もし他にもこういった文字(MacとWinで入力時に注意すべき文字)があれば是非教えてください。ちなみに、Macの「\」はWinでは「¥(←これはMacで¥を入力しているのでU+A5です^^;)」表記になりますが、これはそもそもエスケープとして使うために無視しました。