シフト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バイトマッチのソースが
あれば教えてください。

このQ&Aに関連する最新のQ&A

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に関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q▽オススメのバイトは…?

▽オススメのバイトは…?

現在大学2年生で4月からバイトを初めてしようと思っています。
そこでオススメのバイトはどんな系統のバイトが良いですか?

回答よろしくお願いします。

Aベストアンサー

初めてなら…
コンビニ、ミスド、マクド。あとでもう一度応募するとき経験を買われて喜ばれる
ガソリンスタンド(時給まあまあ。夏は地獄)

時間に余裕があるなら
交通量調査。今の季節なら楽(冬なら死ぬが)
各企業のクレーム対応(時給高い。ただし暴言連続数時間もある)
スーパー・コンビニのナイトレジ(時給高め。ただし犯罪に巻き込まれるかも)
資格試験の試験官(見ているだけでいいので超楽。ただし単発バイト)

ハイリスク・ハイリターンバイト
治験バイト(かなり高額。でもさまざまな条件付き)
出会い系のサクラ(かなり高額。数十万以上稼げる。でも違法スレスレのところも)
引越手伝い(時給高いが腰をやられることも)
宅配便(重い荷物をエレベーターなし、着払い時にトラブルは自腹)

どうでしょうか。素敵なバイトが見つかるといいですね

Qperlで、[ \r\n , \n ]の意味は?

シンプルなCGI掲示板の勉強中ですが、

$message =~s/[ \r\n , \n ]/<br \/>/g; となっており、
これは改行文字を<br />に置き換えるのだそうですが、
[ \r\n , \n ]の部分というのはどういった意味でしょうか。

[ abc ]だと、a,b,cのうちどれか1文字は入っていれば良いですよね。
[ ]に「,」が入るとよく分からなくなります。

お分かりの方、教えてくださいませんか。
よろしくお願いいたします。

Aベストアンサー

サンプルは、
$message =~ s/\r\n/<br \/>/g;

$message =~ s/\n/<br \/>/g;
1行で済ませようとして間違ってしまったのでしょうか?

\r 復帰文字(return)

\n 改行(newline)

「,」カンマそのもの

\r 復帰文字 (return)
のいずれかを<br />に置き換える、という意味になってしまうでしょうね。
この目的のためには、

$message =~ s/\r\n/<br \/>/g;
$message =~ s/\r/<br \/>/g;
$message =~ s/\n/<br \/>/g;

と3行記述するのがいいのではないでしょうか?

参考サイトに私が勉強させてもらっているサイトを紹介しておきます。

参考URL:http://www.rfs.jp/sitebuilder/perl/04/07.html

Qオススメのバイト、過去に経験したバイト、現在やっているバイト教えてくだ

オススメのバイト、過去に経験したバイト、現在やっているバイト教えてください(^^)

Aベストアンサー

自分は現在、社会人三年目なのですが
高校生~大学生にかけてバイトは割とこなしました。

・派遣登録の仕事…(3年程度)
・マクドナルド…(1年程度)
・居酒屋…(1年程度)
・塾の個別講師…(1年程度)
・大手スーパー…(半年程度)
・雀荘…(3か月程度)
・酒屋さん…(3か月程度)
・アパレル販売…(3か月程度)
・バイキング店…(3か月程度)
・パン屋さん…(3か月程度)
・ディスカウントショップ…(3か月程度)
・棚卸の仕事…(3か月程度)
・映画館…(1か月程度)
・郵便局・・・(冬休み限定)

・・・後は忘れましたw




出会いが欲しいのならば、飲食店はすごくオススメです。
楽しいと思いますよ。その分、結構大変ですけど。

楽がしたいなら、コンビニですね。
特に深夜は楽して高給で働けるんでオススメです。(女性は無理かもしれませんが)

お金が稼ぎたいなら、居酒屋、夜勤の仕事、もしくは夜系の仕事、パチンコ屋
・・・・そのあたりでしょうね。


あと、個人的には楽な仕事よりは厳しく叱ってくれるような
厳しい仕事を選んでおくことを勧めます。
その時は面倒でも、将来有難いと思えますよ。

頑張ってください。

自分は現在、社会人三年目なのですが
高校生~大学生にかけてバイトは割とこなしました。

・派遣登録の仕事…(3年程度)
・マクドナルド…(1年程度)
・居酒屋…(1年程度)
・塾の個別講師…(1年程度)
・大手スーパー…(半年程度)
・雀荘…(3か月程度)
・酒屋さん…(3か月程度)
・アパレル販売…(3か月程度)
・バイキング店…(3か月程度)
・パン屋さん…(3か月程度)
・ディスカウントショップ…(3か月程度)
・棚卸の仕事…(3か月程度)
・映画館…(1か月程度)
・郵便局・・・(冬休み限定)

・・・後は忘れましたw




出会いが欲...続きを読む

QシフトJISの文字列「表示」が次のように

print "<INPUT TYPE='submit' VALUE='表\示'/>\n";

しないと化けるのですが
「表」の2バイト目が「\」と同じだからと言うことですが
最初のバイトを見れば文字を正確に認識できるはずなのになぜ化けるのでしょうか?

Aベストアンサー

>最初のバイトを見れば文字を正確に認識できるはずなのになぜ化けるのでしょうか?

その「認識」をしているのは文字を表示しているクライアント側のブラウザ等ですが、
"\"を特殊文字とみなしてしまうのはサーバー側のperlだからです。

Qオススメのバイトを教えてください! やって見て暇だったバイトや、楽しかったバイトなど経験上これはよか

オススメのバイトを教えてください!

やって見て暇だったバイトや、楽しかったバイトなど経験上これはよかった!というバイト教えてください

Aベストアンサー

若い頃の飲食店は楽しかった!

まかないも食べれるし、友達もできるし、体動かすのが好きだし、サービス精神を覚えるし、飲み物の名前、食事のメニューの名前も勉強になるし。

若いなら是非オススメします。

QシフトJISの2バイト文字を知る

シフトJISの2バイト文字を0に置き換えたいと思いました。

$sjifstr =~ tr/\x??-\x??/'0'/;

という部分の?が分かればこれは成功しますか?

これは2バイト文字を知るための勉強として
試していることです。
2バイト文字のことが分かるようになったら、
フォームから入力された文字列が7文字以上だった場合、
6文字目を…にして、日本語1文字を2文字として計算して
必ず6文字以内になるようにしたいと思っています。

abあいc → abあ…
あaいう → あい…
a亜bcい → a亜b…

のようにしたいと思っています。
それで、まず2バイト文字だけを取り出す方法を
教えてもらおうと思いました。

Aベストアンサー

サンプル作ったげるから、あとは自分で研究してちょうだいな。

プログラム1
######################################

$strlen=10;
$line=<STDIN>;
chomp $line;
if (length $line>10) {
if (substr($line, $strlen-1, 2) =~ /([\x81-\x9f][\x40-\xfc])|([\xe0-\xfc][\x40-\xfc])$/) {
$line=substr($line, 0, $strlen-1);
} else {
$line=substr($line, 0, $strlen);
}
print $line."…";
} else {
print $line;
}

######################################


プログラム2
######################################
while(<>) {
$cnt =s/([\x81-\x9f][\x40-\xfc])|([\xe0-\xfc][\x40-\xfc])//g; # shift-jisの文字数
$cnt+=s/.//g; #半角の文字数
print $cnt;
}
######################################

サンプル作ったげるから、あとは自分で研究してちょうだいな。

プログラム1
######################################

$strlen=10;
$line=<STDIN>;
chomp $line;
if (length $line>10) {
if (substr($line, $strlen-1, 2) =~ /([\x81-\x9f][\x40-\xfc])|([\xe0-\xfc][\x40-\xfc])$/) {
$line=substr($line, 0, $strlen-1);
} else {
$line=substr($line, 0, $strlen);
}
print $line."…";
} else {
print $line;
}

######################################


プログ...続きを読む

Qはじめてバイトをするならどんなバイトがオススメですか?

はじめてバイトをするならどんなバイトがオススメですか?

Aベストアンサー

何を求めるかによると思います。

やりがいを求めるのか
楽なバイトしたいのか
やりやすいバイトがいいのかとか

また、基本的には人間関係が
大事になります。
クソしんどい仕事内容でも
同じバイト仲間がいい人であれば
楽しくできるも思います。
逆に楽なバイトでも
仲間がくそうざいやつなら
自ずと辞めたくなると思います。

あとは求人誌にこれ毎回募集してるなー
って思うところはやめたほうがいいかもしれません。
常に人がいない状態=常に人が辞めていく状態
ということでしんどい内容の仕事かもしれません。
そのような感じで選んでいくといいかもしれませんよ。

Qパターンマッチで変数でマッチさせるには?

教えて下さい。
パターンマッチで変数$aaa(中身は2バイト文字)でマッチしたいのですが
どう書いたらいいんでしょう?

以下のように書いたらマッチしませんでした(;ω;)

if($value[5] =~ /^($aaa)/)

Aベストアンサー

以下のように書いたら、マッチ!しました
use encoding "Shift_JIS";

@value=("日本", "美国", "中国", "台湾", "ソ連", "韓国");

$aaa="韓国";

if($value[5] =~ /^($aaa)/){
print "マッチ!";
} else {
print "アンマッチ!";
}

Qオススメのバイト

オススメのバイト
つい先日、長年働いていたコンビニを辞めたので次のバイト先を探しています。
みなさんがいままでやった中で
オススメのバイトを教えて下さい!
どこが楽しかったのか、また
嫌だったところなども書いてもらえると嬉しいです(^O^)!

Aベストアンサー

選挙管理委員会のアルバイトは楽しかったですね。楽だし、残業もきっちり付くし、またやりたいですね。残念ながら、応募の倍率が高いのがネックです。

Q\t\t の意味

print "\t\t<TR>\n"; の
\t\t の意味はなんですか、
宜しくお願いします。

Aベストアンサー

\tは「TAB」の意味で、通常は半角で8文字のスペースが表示されます。
ですから、\t\tでTAB2個分の空白があくことになります。


人気Q&Aランキング

おすすめ情報