メニューを閉じる

テクノデジタルグループ

メニューを開く

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つでも当てはまる方は是非、詳細ページへ!
  • 自分でアプリを作ってみたい
  • ITで世の中にワクワクを生み出したい
  • 使いやすさ、デザインにこだわったWebサイトを開発したい

採用情報の詳細はこちら


Qangaroo(カンガルー)

  • 徹底した見やすさと優れた操作性で、テストの「見える化」を実現。
  • テストの進捗が見える。開発がスマートに進む。
  • クラウド型テスト管理ツール『Qangaroo(カンガルー)』

【テクノデジタルのインフラサービス】

当社では、多数のサービスの開発実績を活かし、
アプリケーションのパフォーマンスを最大限に引き出すインフラ設計・構築を行います。
AWSなどへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。

https://www.tcdigital.jp/infrastructure/

最近の記事