Edited at

正規表現、最強の必殺技Unicode 文字プロパティ


正規表現最強の文字クラス表現 Unicode 文字プロパティ

こんにちわ。

いつも書類追われてるpratulaです。

今回、これすげぇ感がある正規表現の技を見つけたのでメモ


普通の正規表現

まず、サクラエディタとかで、英数字を検索したいと思った時、どう描くか、というと

多分こんな感じだと思います。

[a-zA-Z0-9]+

じゃあ、漢字を抜き出したい記号だけ消したいとかそう思った時意外と戸惑いますよね。

それを端的に解決してくれるのがUnicode 文字プロパティです!


文字プロパティの表現を使ってみる

まず、普通の正規表現で「漢字」を抜き出してみます。

[一-龠]+

こんな感じっぽいです。ですが、後ろの漢字、結構変換に手間取ります。それに文字コードによって、漢字をちゃんと抜き出さないとかもしばしば・・・

そこで、これをこんな表現にしちゃいましょう!

[\p{Han}]+

これは正規表現の文字クラスの書き方の一つで、「Unicode上の中国、韓国、日本語圏で使用する漢字を抜き出す」ものです。

使い方は

\p{欲しい文字集合のプロパティー名}

これだけです!

これを使って「ひらがな」「カタカナ」「漢字」の日本語文を検索したいみたいな正規表現を書くと・・・

[\p{Han}]\p{Katakana}]\p{Hiragana}]+

こうなります。[一-龠ァ-ンぁ-ん]とかよりも一気に可読性が上がった気がしません?

このようにして簡単な記述で大量の文字処理が可能になる表現がUnicode文字プロパティなのです!