プロが教える店舗&オフィスのセキュリティ対策術

シフトJISの2バイト文字の範囲は

0x40~0x7e と 0x80~0xfc



0x40~0xfc

のどっちですか?
どちらの情報も見たことがあるんです。

シフトJISの文字をマッチングさせる場合、
ここでは見やすく、スペースを入れて

/ [\x81-\x9f] [\x40-\xfc] | [\xe0-\xfc] [\x40-\xfc] /

とした場合、例えば、亜a という文字列があったら
亜 の2バイト目(下位ニブルっていうのかな)が 9F で
b は16進で 62 だから、亜 の2バイト目と a が、
2バイトのシフトJISとしてこれにマッチしてしまうんです。
シフトJISで、こういう例外処理を書かずに、
全てに適用できるシフトJIS2バイトマッチのソースが
あれば教えてください。

A 回答 (2件)

「0x40~0x7e と 0x80~0xfc」だと思いますよ。


「亜a」に対してマッチングするのではなく、前から2バイトずつマッチングして、マッチしたら2バイト進み、マッチしなかったら1バイト進むというようにしないとダメでは?
0x7fの例外処理?を除くことはできないですよね。

参考URL:http://www.sowa.is.uec.ac.jp/~ueno/material/kanj …
    • good
    • 0
この回答へのお礼

文字列先頭から見ていく
というのは思いつきませんでした。
ありがとうございます。

お礼日時:2001/10/17 19:41

シフトJISの2バイト目のコードは、


0x40~0x7E 及び 0x80~0xFC
です。
0x7Fは含みません。

で、2バイトシフトJISにマッチさせるなら、
/([\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])/
と書けばOKなはずです。
[…]という文字集合を使用しているのだから、2パターンに分ける必要はないですよ。
    • good
    • 0
この回答へのお礼

パターンをパイプを使わずに書く方法は勉強になりました。
ありがとうございます。

お礼日時:2001/10/17 19:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!