さかもつ備忘録

Wednesday, November 15, 2006

Perl での正規表現

# 半角スペース
$str = '\x20';

# 全角スペース
$str = '(?:\xA1\xA1)'; # EUC-JP
$str_sjis = '(?:\x81\x40)'; # SJIS

# 全角数字 [0-9]
$str = '(?:\xA3[\xB0-\xB9])'; # EUC-JP
$str_sjis = '(?:\x82[\x4F-\x58])'; # SJIS

# 全角大文字 [A-Z]
$str = '(?:\xA3[\xC1-\xDA])'; # EUC-JP
$str_sjis = '(?:\x82[\x60-\x79])'; # SJIS

# 全角小文字 [a-z]
$str = '(?:\xA3[\xE1-\xFA])'; # EUC-JP
$str_sjis = '(?:\x82[\x81-\x9A])'; # SJIS

# 全角アルファベット [A-Za-z]
$str = '(?:\xA3[\xC1-\xDA\xE1-\xFA])'; # EUC-JP
$str_sjis = '(?:\x82[\x60-\x79\x81-\x9A])'; # SJIS

# 全角ひらがな [ぁ-ん]
$str = '(?:\xA4[\xA1-\xF3])'; # EUC-JP
$str_sjis = '(?:\x82[\x9F-\xF1])'; # SJIS

# 全角ひらがな(拡張) [ぁ-ん゛゜ゝゞ]
$str = '(?:\xA4[\xA1-\xF3]\xA1[\xAB\xAC\xB5\xB6])'; # EUC-JP
$str_sjis = '(?:\x82[\x9F-\xF1]\x81[\x4A\x4B\x54\x55])'; # SJIS

# 全角カタカナ [ァ-ヶ]
$str = '(?:\xA5[\xA1-\xF6])'; # EUC-JP
$str_sjis = '(?:\x83[\x40-\x96])'; # SJIS

# 全角カタカナ(拡張) [ァ-ヶ・ーヽヾ]
$str = '(?:\xA5[\xA1-\xF6]\xA1[\xA6\xBC\xB3\xB4])'; # EUC-JP
$str_sjis = '(?:\x83[\x40-\x96]\x81[\x45\x5B\x52\x53])'; # SJIS

# 半角カタカナ [ヲ-゜]
$str = '(?:\x8E[\xA6-\xDF])'; # EUC-JP
$str_sjis = '[\xA6-\xDF]'; # SJIS


# EUC-JP文字
$ascii = '[\x00-\x7F]'; # 1バイト EUC-JP文字
$twoBytes = '(?:[\x8E\xA1-\xFE][\xA1-\xFE])'; # 2バイト EUC-JP文字
$threeBytes = '(?:\x8F[\xA1-\xFE][\xA1-\xFE])'; # 3バイト EUC-JP文字
$character = "(?:$ascii$twoBytes$threeBytes)"; # EUC-JP文字

# EUC-JP文字(機種依存文字・未定義領域・3バイト文字を含まない)
$character_strict = '(?:[\x00-\x7F]' # ASCII
'\x8E[\xA1-\xDF]' # 半角カタカナ
'[\xA1\xB0-\xCE\xD0-\xF3][\xA1-\xFE]' # 1,16-46,48-83区
'\xA2[\xA1-\xAE\xBA-\xC1\xCA-\xD0\xDC-\xEA\xF2-\xF9\xFE]' # 2区
'\xA3[\xB0-\xB9\xC1-\xDA\xE1-\xFA]' # 3区
'\xA4[\xA1-\xF3]' # 4区
'\xA5[\xA1-\xF6]' # 5区
'\xA6[\xA1-\xB8\xC1-\xD8]' # 6区
'\xA7[\xA1-\xC1\xD1-\xF1]' # 7区
'\xA8[\xA1-\xC0]' # 8区
'\xCF[\xA1-\xD3]' # 47区
'\xF4[\xA1-\xA6])'; # 84区

# EUC-JP未定義文字(機種依存文字・3バイト文字を含む)
$character_undef = '(?:[\xA9-\xAF\xF5-\xFE][\xA1-\xFE]' # 9-15,85-94区
'\x8E[\xE0-\xFE]' # 半角カタカナ
'\xA2[\xAF-\xB9\xC2-\xC9\xD1-\xDB\xEB-\xF1\xFA-\xFD]' # 2区
'\xA3[\XA1-\xAF\xBA-\xC0\xDB-\xE0\xFB-\xFE]' # 3区
'\xA4[\xF4-\xFE]' # 4区
'\xA5[\xF7-\xFE]' # 5区
'\xA6[\x89-\xC0\xD9-\xFE]' # 6区
'\xA7[\xC2-\xD0\xF2-\xFE]' # 7区
'\xA8[\xC1-\xFE]' # 8区
'\xCF[\xD4-\xFE]' # 47区
'\xF4[\xA7-\xFE]' # 84区
'\x8F[\xA1-\xFE][\xA1-\xFE])'; # 3バイト文字

# SJIS文字
$oneByte_sjis = '[\x00-\x7F\xA1-\xDF]'; # 1バイト SJIS文字
$twoBytes_sjis =
'(?:[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])'; # 2バイト SJIS文字
$character_sjis = "(?:$oneByte_sjis$twoBytes_sjis)"; # SJIS文字

# SJIS文字(機種依存文字・未定義領域を含まない)
$character_sjis_strict = '(?:[\x00-\x7F\xA1-\xDF]' # ASCII,半角カタカナ
'[\x89-\x97\x99-\x9F\xE0-\xE9][\x40-\x7E\x80-\xFC]' # 17-46,49-82区
'\x81[\x40-\x7E\x80-\xAC\xB8-\xBF\xC8-\xCE\xDA-\xE8\xF0-\xF7\xFC]' # 1,2区
'\x82[\x4F-\x58\x60-\x79\x81-\x9A\x9F-\xF1]' # 3,4区
'\x83[\x40-\x7E\x80-\x96\x9F-\xB6\xBF-\xD6]' # 5,6区
'\x84[\x40-\x60\x70-\x7E\x80-\x91\x9F-\xBE]' # 7,8区
'\x88[\x9F-\xFC]' # 15,16区
'\x98[\x40-\x72\x9F-\xFC]' # 47,48区
'\xEA[\x40-\x7E\x80-\xA4])'; # 83,84区

# SJIS未定義文字(機種依存文字を含む)
$character_sjis_undef =
'(?:[\x85-\x87\xEB-\xFC][\x40-\x7E\x80-\xFC]' # 9-14,85-120区
'\x81[\xAD-\xB7\xC0-\xC7\xCF-\xD9\xE9-\xEF\xF8-\xFB]' # 1,2区
'\x82[\x40-\x4E\x59-\x5F\x7A-\x7E\x80\x9B-\x9E\xF2-\xFC]' # 3,4区
'\x83[\x97-\x9E\xB7-\xBE\xD7-\xFC]' # 5,6区
'\x84[\x61-\x6F\x92-\x9E\xBF-\xFC]' # 7,8区
'\x88[\x40-\x7E\x80-\x9E]' # 15,16区
'\x98[\x73-\x7E\x80-\x9E]' # 47,48区
'\xEA[\xA5-\xFC])'; # 83,84区

# iモード対応 絵文字
$iPictograph_base = '(?:\xF8[\x9F-\xFC]' # 基本絵文字(SJIS)
. 'F9[\x40-\x49\x50-\x52\x55-\x57\x5B-\x5E\x72-\x7E\x80-\xB0])';
$iPictograph_ext = '(?:F9[\xB1-\xFC])'; # 拡張絵文字(SJIS)
$iPictograph =
'(?:$iPictograph_base$iPictograph_ext)'; # iモード対応 絵文字(SJIS)

0 Comments:

Post a Comment

<< Home