JFP ユーザーズガイド

文字分類 (LC_CTYPE カテゴリ)

特定の似かよった文字の集合 (クラスと呼びます) を作ることによって、プログラム上、そのクラスを意識するだけで (そのクラスにどの文字が含まれているかを意識することなく)、ロケールに依存しない国際化プログラミングが可能になります。日本語ロケールでは、以下のようなクラスが定義されています。

これらの文字分類クラスは、regex(5) をサポートしたコマンドであり、文字クラス表現の文字列としても wctype(3C) の文字クラスとしても使用可能です。なお、文字分類は LC_CTYPE カテゴリの値に影響を受けます。開発者として文字分類クラスを利用する場合は、『JFP 開発ガイド』を参照してください。

表 2-4 X/Open で規定された文字分類クラス名と日本語ロケールでの定義範囲

文字クラス名 

意味 / 範囲1

upper

任意の大文字を表す文字クラス 

    JIS X 0201 ローマ文字用図形キャラクタ集合

      アルファベット大文字 (C/1 - D/10)



 

    JIS X 0208

      ローマ字大文字 (3/33 - 3/58)


      ギリシャ文字大文字 (6/1 - 24)


      ロシア文字大文字 (7/1 - 33)



 

    JIS X 02122

      ダイアクリティカルマーク付きギリシャアルファベット文字大文字 (6/65 - 69、71、73、74、76)


      キリル系アルファベット大文字 (7/34 - 46)


      ラテン系アルファベット大文字 (9/1、2、4、6、8、9、11、12、13、15、16)


      ダイアクリティカルマーク付ラテン系アルファベット大文字 (10/01 - 24、26 - 87)



lower

任意の小文字を表す文字クラス 

    JIS X 0201 ローマ文字用図形キャラクタ集合

      アルファベット小文字 (E/1 - F/10)



    JIS X 0208

      ローマ字小文字 (3/65 - 90)


      ギリシャ文字小文字 (6/33 - 56)


      ロシア文字小文字 (7/49 - 81)



    JIS X 02122

      ダイアクリティカルマーク付きギリシャアルファベット文字小文字 (6/81 - 92)


      キリル系アルファベット小文字 (7/82 - 94)


      ラテン系アルファベット小文字 (9/33 - 48)


      ダイアクリティカルマーク付ラテン系アルファベット小文字 (11/1 - 27、29 - 35、37 - 87)



 

digit

10 進表現に用いる 0 - 9 までの数字を判別するクラス 

    JIS X 0201 ローマ文字用図形キャラクタ集合

      数字 (B/0 - 9)



space

空白を判別するクラス 

    JIS X 0201 制御キャラクタ集合

      空白 (A/9 - 13)



    間隔文字


    JIS X 0208

      間隔 (1/1)



punct

記号、特殊文字などを判別するクラス 

    JIS X 0201 ローマ文字用図形キャラクタ集合

      A/1 - 15、B/10 - C/0、D/11 - E/0、F/11 - 14



cntrl

制御文字を判別するクラス 

    JIS X 0201 制御キャラクタ集合

      すべての文字



    抹消文字


    C1 制御文字

      すべての文字



blank

フィールド区切り文字を判別するクラス 

    JIS X 0201 制御キャラクタ集合

      A/9



    間隔文字


    JIS X 0208

      間隔 (1/1)



xdigit

16 進表現に用いる英数字を判別するクラス 

    JIS X 0201 ローマ文字用図形キャラクタ集合

      数字 (B/0 - 9)


      A - F、a - f (C/1 - 6、E/1 - 6)



alpha

アルファベットを判別するクラス 

upper クラスと lower クラスの文字

print

表示可能文字を判別するクラス 

    JIS X 0201 ローマ文字用図形キャラクタ集合


    間隔文字


    JIS X 0201 片仮名用図形キャラクタ集合

      文字未定義領域以外のすべての文字



    JIS X 0208

      文字未定義領域以外のすべての文字



    JIS X 02122

      文字未定義領域以外のすべての文字



    ベンダー定義文字領域

      vdc クラスのうち、文字未定義領域以外のすべての文字



    ユーザー定義文字領域

      udc クラスのうち、文字未定義領域も含むすべての文字



graph

図形文字を判別するためのクラス 

print クラスから space クラスに含まれる文字を除いたすべての文字

  1. JIS X 0201 機能キャラクタ集合、ローマ文字用図形キャラクタ集合、片仮名用図形キャラクタ集合での XX/YY は XX 列 YY 行を意味します。 JIS X 0208、JIS X 0212 での XX/YY は XX 区 YY 点を意味します。

  2. JIS X 0212 の文字に関しては、ja または ja_JP.EUC および ja_JP.UTF-8 ロケールのみ該当します。


注 -

ja_JP.UTF-8 ロケールでは、各クラスに、Unicode で定義された上記以外の文字も追加されています。


表 2-5 日本語ロケール専用の文字分類クラス名とその定義範囲

文字クラス名 

意味 / 範囲1

jkanji

漢字 (漢字表記のために使用する記号、表意文字) を判別するクラス 

    JIS X 0208

      16 区 - 84 区の文字定義領域



    JIS X 02122

      16 区 - 77 区の文字定義領域



jkata

片仮名を判別するクラス 

    JIS X 0208

      5/1 - 86、1/11、12、19、20



jhira

平仮名を判別するクラス 

    JIS X 0208

      4/1 - 83、1/11、12、21、22、26



jdigit

digit に含まれる以外の数字を判別するクラス

    JIS X 0208

      3/16 - 25



jparen

括弧などに用いるための文字を判別するクラス 

    JIS X 0208

      1/38 - 59



line

罫線素片を判別するためのクラス 

    JIS X 0208

      8/1 - 32



jisx0201r

JIS X 0201 片仮名用図形キャラクタ集合に属する文字を判別するクラス 

    JIS X 0201 片仮名用図形キャラクタ集合

      A/1 - D/15 までのすべての文字



jisx0208

JIS X 0208 に属する文字を判別するクラス 

    JIS X 0208

      文字未定義領域の文字を含むすべての文字。 ただし、1 - 84 区まで (13 区 ベンダー定義文字領域もここに含まれる)



jisx0212

JIS X 02122 に属する文字を判別するクラス

    JIS X 0212

      文字未定義領域の文字を含むすべての文字。ただし、1 - 84 区まで (83、84 区ベンダー定義文字領域もここに含まれる) ja_JP.PCK ロケールではどの文字もこのクラスに属さない



udc

ユーザー定義文字を判別するクラス

 ユーザー定義文字領域の文字未定義領域も含むすべての文字 

    ja または ja_JP.EUC ロケール

      ユーザー定義文字 (1 - 20 区)



    0xf5a1 - 0xfefe


    0x8ff5a1 - 0x8ffefe


    ja_JP.PCK ロケール

      ユーザー定義文字 (1 - 20 区)



 

    ja_JP.UTF-8 ロケール

      ユーザー定義文字 (6400 文字)



0xee8080 - 0xefa3bf (U+E000 - U+F8FF) 

vdc

ベンダー定義文字を判別するクラス

 ベンダー定義文字領域の文字未定義領域も含むすべての文字 

    ja または ja_JP.EUC ロケール

      JIS X 0208 13 区


      JIS X 02122 83 区 - 84 区



 

特殊記号  

JIS X 0212 に含まれない IBM 拡張文字 

    ja_JP.PCK ロケール

      JIS X 0208 13 区


      NEC 選定 IBM 拡張文字


      IBM 拡張文字



 

特殊記号 

0xed40 - 0xeffc 

0xfa40 - 0xfcfc 

    ja_JP.UTF-8ロケール

      定義なし



 

jalpha

漢字を表す文字を判別するクラス 

    JIS X 0208

      3/33_58、 3/65_90



jspecial

特殊文字を表す文字を判別するクラス 

    JIS X 0208

      1/2 - 94、2/1 - 14、2/26 - 33、2/42 - 48、2/60 - 74、2/82 - 89、94



    JIS X 0212

      2/15 - 25、 2/34 - 36、 2/75 - 81



    JIS X 0208 13 区.....特殊記号


    IBM 拡張文字

      NEC 選定 IBM 拡張文字で定義される特殊文字



jgreek

ギリシャ文字を判別するクラス 

    JIS X 0208

      6/1 - 7/33、6/33 - 56



jrussian

ロシア文字を判別するクラス 

    JIS X 0208

      7/1 - 7/33、7/49 - 81



junit

単位記号を判別するクラス 

    JIS X 0208

      1/75 - 83、 2/82、83



    JIS X 0212

      2/80



jsci

学術記号を判別するクラス 

    JIS X 0208

      1/60 - 74、2/26 - 33、2/42 - 48


      2/60 - 74



jgen

一般記号を判別するクラス 

    JIS X 0208

      1/84 - 94、2/1-14、2/84-89、94



    JIS X 0212

      2/35、75、2/79-81



    JIS X 0212

      2/35、75、2/79 - 81



jpunct

一般記号を判別するクラス 

    JIS X 0208

      1/2 - 37



    JIS X 0212

      2/34、36



  1. JIS X 0201 機能キャラクタ集合、ローマ文字用図形キャラクタ集合、片仮名用図形キャラクタ集合での XX/YY は XX 列 YY 行を意味します。 JIS X 0208、JIS X 0212 での XX/YY は XX 区 YY 点を意味します。

  2. JIS X 0212 の文字に関しては、ja または ja_JP.EUC および ja_JP.UTF-8 ロケールのみ該当します。