Unicodeの「横棒」文字
[日本語の横棒記号に絶望した]
http://taichino.com/programming/1384
[従来の文字コードとUnicodeの対応に関する諸問題]
http://euc.jp/i18n/ucsnote.ja.html
↑Unicodeでは横棒文字がたくさん定義されている。
しかし、人が画面に入力する横棒なんて、見た目が同じならどれを使っていてもどうでもいいので、分けられるとプログラムが面倒になるという話。
一応、上記リンクから半角文字以外を抜き出したのが以下の変数。
KANA_DASH_PATTERN = ( ur'\u2010' ur'\u2011' ur'\u2012' ur'\u2013' ur'\u2014' ur'\u2015' ur'\u207b' ur'\u208b' ur'\u2212' ur'\u30fc' ur'\uff0d' ur'\uff70' ur'\u4e00' )
これを使って、全角・全角ひらがな・全角カタカナの正規表現パターンを以下の通り作った。
KANA_DASH_PATTERN変数に横棒をまとめているので、↓ここで言ったように+演算子で連結しないと構文エラーになる。
http://d.hatena.ne.jp/imagawa_yakata/20091221/1261363176
# -*- coding: UTF-8 -*- KANA_DASH_PATTERN = ( ur'\u2010' ur'\u2011' ur'\u2012' ur'\u2013' ur'\u2014' ur'\u2015' ur'\u207b' ur'\u208b' ur'\u2212' ur'\u30fc' ur'\uff0d' ur'\uff70' ur'\u4e00' ) # 全角のみ一致 ZENKAKU_PATTERN = ( ur'^[一-龠ぁ-ゞァ-ヴ0-9a-zA-Z'+ KANA_DASH_PATTERN+ ur']+$' ) # 全角ひらがな HIRAGANA_PATTERN = ( ur'^[ぁ-ゞ'+ KANA_DASH_PATTERN+ ur']+$' ) # 全角カタカナ KATAKANA_PATTERN = ( ur'^[ァ-ヴ'+ KANA_DASH_PATTERN+ ur']+$' ) print ZENKAKU_PATTERN #=> ^[一-龠ぁ-ゞァ-ヴ0-9a-zA-Z‐‑‒–——⁻₋−ー−ー一]+$ print HIRAGANA_PATTERN #=> ^[ぁ-ゞ‐‑‒–——⁻₋−ー−ー一]+$ print KATAKANA_PATTERN #=> ^[ァ-ヴ‐‑‒–——⁻₋−ー−ー一]+$