1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

UTF-16 で絵文字を表す正規表現(Windows の PowerRename で絵文字をファイル名から削除する)

Last updated at Posted at 2023-11-17

絵文字の正規表現

絵文字はおおよそ以下の範囲になるそうです。

[\u{2600}-\u{27BF}\u{1F000}-\u{1FFFF}]

(※あくまでも「おおよそ」なので実際には が含まれていたり が含まれていなかったりしますが、この記事の主題ではないため割愛します。)

これを UTF-16 に変換します。

UTF-16 の絵文字の正規表現

\u{1F000}-\u{1FFFF} は下位12ビットが 0 または 1 なので、UTF-16の文字 2文字(サロゲートペアと呼びます)で以下のように表せます。(? は 0 または 1 )

1文字目 : 0b_11011000_001111??
2文字目 : 0b_110111??_????????

この1文字目と2文字目は独立に(互いに依存しないような形で)正規表現で表せて、それぞれ [\uD83C-\uD83F][\uDC00-\uDFFF] となります。従って、絵文字を表す UTF-16 の正規表現は以下のようになります。

([\u2600-\u27BF]|[\uD83C-\uD83F][\uDC00-\uDFFF])

PowerRename で正規表現を使用してファイル名から絵文字を削除する

Dropbox で絵文字を含むファイルが管理できていなかったので、それを削除したいと思います。

多分 Windows のファイルシステムがそうだからだと思うのですが、PowerRename では UTF-16 での文字コードでファイル名のりネームができるようだったのでやってみます。

PowerRename を使用し、以下の設定で置換を行いました。

置換対象文字列 : ([\u2600-\u27BF]|[\uD83C-\uD83F][\uDC00-\uDFFF])
正規表現を使用 : ON
すべての出現箇所を一致させる : ON
置換の候補 : "" (何も入力しない)

image.png

参考:合字 と ZWJ (zero width joiner)

ただし、肌の色が指定された絵文字 (ex: 👍🏽) など、上記の範囲で表せない絵文字もあり、ゴミが残ってしまうこともあります。

ただ、「絵文字」は削除できたので、一旦目的は達成したことにして、このあたりは気が向いたら調べたいと思います。

おまけ

Windows10 + Chromium (Twemoji 無し) 環境での絵文字一覧

  • 0x2000 - 0x2FFF

image.png

  • 0x1F000 - 0x1FFFF

image.png

余談

ここまで書いて気付いたのですが、今回のように Dropbox を使用したいというケースであれば単に「サロゲートペアで表される文字」を削除すれば良かっただけだったっぽいので、[\u2600-\u27BF] を削除する必要性や絵文字の範囲について思いを巡らせる必要性はなかったかもしれません。

その場合、もし、U+10000 から U+10FFFF までを削除したいのであれば、(UTF-16 において)削除対象の文字は以下のようになります。

[\uD800-\uDBFF][\uDC00-\uDFFF]
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?