• ベストアンサー

全角ひらがな、漢字をマッチさせたい

sssoheiの回答

  • ベストアンサー
  • sssohei
  • ベストアンサー率33% (33/98)
回答No.1

パターンマッチを利用することをオススメします。 とりあえず、余計なマッチミスを防ぐためにも、EUCコードに変換してから処理を行います。 参考URLのページに詳しく解説されています。 参考URLのページをみても分からなければ、補足をお願いします。 一応、主要な文字コードのパターンを記しておきます。 $nobashi = '(?:\xA1[\xBC\xBD\xC1])'; # ー-~ $kigo = '(?:[\xA1\xA2][\xA1-\xFE])'; # 全角の記号 $suuji = '(?:\xA3[\xB0-\xB9])'; # 0-9 $alphabet = '(?:\xA3[\xC1-\xDA\xE1-\xFA])'; # 全角英字 $alpha_big = '(?:\xA3[\xC1-\xDA])'; # 全角英字(大文字A-Z) $alpha_small = '(?:\xA3[\xE1-\xFA])'; # 全角英字(小文字a-z) $hiragana = '(?:\xA4[\xA1-\xF3])'; # ぁ~ん $katakana = '(?:\xA5[\xA1-\xF6])'; # ァ~ヶ

参考URL:
http://www.din.or.jp/~ohzaki/perl.htm
pco
質問者

補足

回答ありがとうございます。 参考URLを見てやってみたのですがうまくいきません。 カタカナが1文字の時はうまく行くようなのですが、複数のカタカナになった場合、失敗します。 文字コードは全てEUCで行っています。 以下がやろうとしている手順です。 1.全角文字を半角文字へ変換する 2.チェックを行う #1バイト文字以外の時 if($buf !~ /[\x00-\x7F]/){   #半角カタカナ以外のとき   if($buf !~ /(?:\x8E[\xA6-\xDF])/){     print "NG\n";     exit;   } } print "OK\n"; どこがおかしいのでしょうか。 正規表現はまだよく分かっていないためご迷惑をおかけしますがよろしくお願いします。

関連するQ&A

  • フォーム入力のチェック

    フォームの入力をCGI(Perl)でチェックするとき、 全角の漢字、カタカナ、ひらがなでの入力以外は禁止にしたいです。 どなたかいい方法をご存知でしょうか? とりあえず、現在は、 jcode.plで全角英数字⇒半角英数字に変換 フォームに入力された文字列を一文字(半角2文字)ずつ抽出して、 $a=~ s/([^\w ])/'%' . unpack("H2", $1)/eg; でエンコードしたものが%を含んでいるかどうかで判別してます。 でもこれだと全角英数字と半角英数字しかシャットアウトできません。 記号文字なども入力出来ないようにしたいです。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • 全角漢字の入力チェック

    Javascriptにて、Formのテキストフィールドの内容を入力チェックしているのですが、「全角漢字」「全角かな」「全角カナ」「半角英数字」 のみを許可して、それ以外の入力文字をいれるとエラーになるような 関数を作りたいのですが、全角記号や半角記号をチェックするには どうしたらよいのでしょうか。

  • Perl UTF8 での全角カタカナチェック

    ■環境 Linux, Perl 5.8 です。 画面(HTML)と処理(Perl)は分けて作成しており、Templateモジュールで画面表示を行っています。 HTMLもPerlも文字コードはUTF-8です。 ■質問 フォームからうけとった文字列で全角カタカナと特定の全角記号以外はエラーとする 入力チェック処理(正規表現)がうまくチェックを行ってくれません。 SJISだと以下のような書き方があるそうなのですが、UTF8での書き方がわかりません。 ・SJIS if($data !~ /^(?:\x83[\x40-\x96])+$/){ $mes="全角カナ以外の文字が指定されています"; } UTF8での書き方を教えて頂きたいです。 なお、許容する全角カタカナと特定の全角記号は以下のとおりです。 ========================================================== アイウエオカキクケコサシスセソタチツテトナニヌネノ ハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン ァィゥェォッャュョヵヶヴガギグゲゴザジズゼゾダヂヅデド バビブベボパピプペポーヽヾ ========================================================== ご教授お願い致します。

  • 全角から半角に変換する

    Javaで、文字列の中に全角があれば単純に半角に変換するような処理をしたいです。具体的には、次のような文字列があった場合、以下のように変換したいです。 <変更前> あ亜アアaaAA11%% <変更後> ア亜アアaaAA11%% つまり、以下のようにしたいです ・全角ひらがな→半角カタカナ ・漢字:何もしない ・全角カタカナ→半角カタカナ ・半角カタカナ:何もしない ・半角アルファベット→何もしない ・全角アルファベット→半角アルファベット ・半角数字→何もしない ・全角数字→半角数字 ・半角記号→何もしない ・全角記号→半角記号 上記のように書くと複雑に見えますが、要は基本的に半角に相当する文字がある場合には半角にしたいだけです。Googleで探してみましたが、Javaで標準で上記のような処理を出来るようなメソッドを見つけることができませんでした。このようなメソッドは標準で存在しますでしょうか? 自作する場合、いくつかアプローチがあると考えられますが、最もパフォーマンスを速くしたい場合にはどのような作り方にした方がよいでしょうか。お手数ですが、宜しくお願いします。 <追伸> プレビューで見たら、半角の文字が全角に自動的に変換されてしまいました。。 例文からはわかりにくいかも知れませんが、宜しくお願いします。。

    • ベストアンサー
    • Java
  • ひらがなをカタカナに変換する

    jperlではないperlで、ひらがなをカタカナに変換するにはどのようにすればよろしいのでしょうか? 変換文字列はEUCとしてその変換方法を教えてください。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • Wordでカタカナのみを全角にする方法

    Word2000です。全角、半角が混在している文で、英数文字だけを半角文字にしたいのですが、文字種の変換で、「半角」にチェックを入れるとカタカナまで半角になってしまいます。カタカナは全角のままで残したいのですが、良い方法はないものでしょうか。 次のどちらかの方法ができれば良いと思うのですが・・・ 1.カタカナのみを全角にする方法 2.英数文字のみを半角にする方法 よろしくお願いします。

  • 半角カタカナを全角カタカナに変換したい

    Windows2000/Microsoft Excel2000です。 入力されている文字列のカタカナが半角になっているのを 全角に一括変換する数式はありますでしょうか? 英数字は半角のまま残したいのですが。 JISを使うと英数字も全角になってしまいます。 ヘルプいただけると大変助かります。

  • ひらがな→カタカナ変換

    ASPの画面で入力されたひらがなの値を、VBスクリプトでカタカナに変換する方法を教えてください。

  • Access97:漢字を除いて全角文字の入力を禁止するには

    使う文字 漢字、半角英数、半角カタカナ、半角括弧() 禁止文字 全角英数、全角カタカナ ひらがな どうやったら入力制限出来るでしょうか?

  • エクセルでの漢字(全角ひらがな・全角カタカナ含む)→半角カタカナへの変換について

    お世話様です。 質問です。 たとえば、「今日のニューヨークは晴れです」という文章を 「キョウノニューヨークハハレデス」というように、半角カタカナに一発で変換することは可能でしょうか? 仕事で商品などを登録する際に半角カタカナでの入力が原則なので、 ひとつひとつ手作業で変換するのは非常に時間がかかってしまいます。 ほかのデータから引っ張ってくることが多いので、phonetic関数は使えないようです。 現在は先輩の作った変換FMがあるのですが、別途立ち上げる必要がありますし、データが重いので会社の貧弱なスペックのパソコンではすぐフリーズしてしまいます。 できれば、A1に「今日のニューヨークは晴れです」とあれば、B1に自動で「キョウノニューヨークハハレデス」と表示されると楽なのですが・・・ 何かいい方法をご存知の方がいらっしゃれば教えていただきたいです。 よろしくお願いいたします。