2008.02.13

正規表現の特殊な記述

今回は正規表現における特殊な記述方法をご紹介します。
ご紹介をする前に、簡単なひらがな、カタカナ、漢字チェックを
下記にご紹介。

ひらがな・カタカナ・漢字は16進表記で表すと以下のようになります。

・ひらがな
3040 ~ 309F
・カタカナ
30A0 ~ 30FF
・漢字(ひらがな、カタカナもカバーしている模様)
4E00 ~ 9FFF

これを利用して、次のような正規表現を書きます。
[\4E00-\u9FFF]

ちなみに、「\u+16進数」はUnicode文字とマッチする文字列を意味します。

さて、上記の書き方も一つの記述方法ですが、UniCodeの規格団体である
UTCが以下のようなUnicode文字のブロックの範囲を定義しています。

・ひらがな
Hiragana
・カタカナ
Katakana
・漢字
CJK Unified Ideographs or Han

↓その他の国の言語に関しては以下を参照。
http://www.unicode.org/Public/UNIDATA/Blocks.txt

ブロック名の先頭に「IS」を付け文字クラスを中カッコで
くくり、“\p”を付けたものが正規表現における「名前付きクラス」となります。
(ブロック名の前にISを付けるのは.NET独自のもの、JAVA:Perlでは不要)
これを利用し、以下のような正規表現が書けます。

ひらがなチェック
\p{IsHiragana}

カタカナチェック
\p{IsKatakana}

漢字チェック
\p{IsCJKUnifiedIdeographs}

上記で紹介した以外にも\p{~}で表現が出来るものがあるので一部紹介します。

英数字
p{Latin} ※

スペースや句読点など
\p{Common}※

表示可能な文字
\p{L}

記号
\p{S}

数学記号
\p{Sm}

※OSなどの環境によっては利用できないものもあります。

私が試した範囲では、特殊なケースを除いては使用出来る
のかな?と思いました。
簡単なチェック関数などで、上記の表記で正規表現を記述
してみるのも良いかもしれません。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
jin