2024.12.05
【弊社紹介】社内勉強会開催!2024上期総集編
2024.07.09
プログラミングRubyやPHPで使える正規表現ライブラリ「鬼雲」の便利な日本語向けプロパティ紹介
こんにちは。ZYです。
今回はRubyやPHPに標準で使われている正規表現ライブラリである「鬼雲」のプロパティをご紹介します。
鬼雲とは、正規表現ライブラリで、Ruby2.0以降に使用されています。
名前からもわかる通り、作成者は日本人です。そのおかげか、日本語などの多バイト文字に対する機能が多く搭載されています。
日本のシステムだと普段はUTF-8だけど、CSVなどはExcelで開く関係上SJIS……みたいな複数の文字コードが混在する場合があります。
これに対応するための鬼雲では、オブジェクトごとに異なった文字コードで処理できるようになっています。
今回紹介するのは、これです。日本語用のプロパティが豊富に用意されてるので、楽に正規表現を書けます。
\p{Han}
漢字全般をこれで引っかけられます。
もしプロパティを使わずUnicodeで指定する場合は、以下のような正規表現になります。
[\u{3400}-\u{4DBF}\u{4E00}-\u{9FFF}\u{F900}-\u{FAFF}\u{20000}-\u{2A6DF}\u{2A700}-\u{2B73F}\u{2B740}-\u{2B81F}\u{2B820}-\u{2CEAF}\u{2F800}-\u{2FA1F}]
はい。これだけでも「鬼雲って便利!」と感じますね。そもそも、プロパティを使わないと、なにを対象とした正規表現か全くわかりません。
\p{Hiragana}
\p{Katakana}
このあたりはプロパティを使わなくてもわかりやすい部類ですが、カタカナは半角カタカナも含まれており、より広範囲をカバーできます。
ちなみに、カタカナは、実は伸ばし棒が含まれていません。なのでカタカナを含める場合は以下のように書いてください。
\p{Katakana}ー
\p{alnum}
よく使う英数字ですが、これ実は全角も対応しています。以下と同じです。
[0-90-9a-zA-Za-zA-Z]
日本語環境を前提に考えられてる正規表現エンジンであることがよくわかると思います。
\p{word}
上記の英数字に加えて、各種ひらがな・カタカナ・漢字などの多バイト文字。
要するに、記号以外で一般的な単語を構成する文字になります(どこまで含まれるか完全に調べてないので自信がないですが……)。
\p{blank}
半角スペース、タブなどのいわゆるブランク文字。全角スペースも対応しています。
公式ドキュメントに、他のプロパティも記載されてます。
公式ドキュメントだと、どこまで含まれるか少しわかりづらいので、Rubyの正規表現チェッカーサイトも使って確かめてみてください。
日本語は多種多様な文字が含まれており、正規表現を書く際に「面倒くさい」と感じることが多いと思います。
鬼雲が入っている環境限定にはなりますが、プロパティを上手く使えばスマートに正規表現を書けるので、ぜひお試しください。
【記事への感想募集中!】
記事への感想・ご意見がありましたら、ぜひフォームからご投稿ください!【テクノデジタルではエンジニア/デザイナーを積極採用中です!】
下記項目に1つでも当てはまる方は是非、詳細ページへ!Qangaroo(カンガルー)
【テクノデジタルのインフラサービス】
当社では、多数のサービスの開発実績を活かし、
アプリケーションのパフォーマンスを最大限に引き出すインフラ設計・構築を行います。
AWSなどへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。
最近の記事
タグ検索