• ベストアンサー

文字列検索時違う文字でマッチしてしまいます。

はじめまして。早速ですが・・・。 CGIで文字列検索し、検索語にマッチした場合その文字を抜き出すという処理をしているのですが、違うところでマッチングしてしまいます。 (プログラム、CSVデータともにEUCです。) たとえば・・「海」を検索語として検索した場合、「~こむ~」という部分でマッチしてしまいます。 おそらく「海:[B3A4]」「こむ:[A4B3][A4E0]」でEUCコードになっている為、B3A4でマッチしているんだと思います。 何か有効な検索処理等はないものでしょうか? よろしくお願い致します。

  • rk_hr
  • お礼率71% (10/14)
  • CGI
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

誰でも悩むところだと思います。 参考URLのところが、そのまま答えになってます。jperl を使う以外は、 すっきりした解決方法はない(*)です。   (*) より、正確に言えば、私は知らない ちなみに、参考URLに示したところは、結構使いでが有ります。 perl を良く使うのであれば、ブックマークに保存しておくように :-)

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

お礼

回答ありがとうございます。 早速参考にさせていただきました。 参考にする前よりマッチの精度は比較的大きく上がりました。 が、やっぱりいくつかはへんちくりんなところでマッチしちゃいます。 やっぱり完全なマッチはきびしーのかなぁー。

その他の回答 (1)

  • cocky
  • ベストアンサー率57% (232/402)
回答No.1

jcode.pl中のjcode'tr()などは試されましたか? Perlインタプリタ自体に手を加えられるのであれば、jperlパッチを当てるという手段もありますが。

rk_hr
質問者

お礼

早速のご回答ありがとうございます。 ところですいませんがjcode'tr()の機能を使用したことがありません。 早速勉強してみますが、どのようなjcode'tr()には活用方法があるのでしょうか?? 文字列を最初から1文字ずつマッチさせていくような機能?? 大変申し訳ありませんがよろしくお願い致します。

関連するQ&A

  • 外部取得文字列と内部記入文字列のマッチング

    CSVなどからダウンロードした文字列とソース内に書いた文字列をマッチングさせようとしているがうまくいきません。 utf8で書かれたソース内でmy $a =('可')という文字列とcsvから取り込んだ文字列 my &b = ('可')をマッチングさせようとしているのですがうまくいきません。 use utf8を宣言してマッチングさせるには$bもしくは$bをどう変えればよいのでしょうか?

    • ベストアンサー
    • Perl
  • 【エクセル】結合した文字列の検索について

    エクセルで、複数セルの文字列を「=A1&A2&A3&…」という感じで、B1セルに結合するとして、 例えばA2の文字列に「★」という文字が含まれているとします。 検索で「★」を指定した場合、A2のものは引っかかるのですが、B1の結合された文字列は引っかかりません。 B1セルの文字列も通常通り検索できるようにするには、B1セルでどのような処理をすれば良いのでしょうか。

  • 任意の文字列を検索して文字を追加する。

    マクロについてご質問します。 宜しくお願い致します。 <質問> A列…すべてのデータが入っています。 B列…検索したいデータが入っています。 C列…検索結果のデータを出力します。 過去に教わったIF関数を使用した「=IF(ISNA(MATCHを組み合わせた式)」方法ですとA列の文字とB列の文字が一致しているものは そのままC列に表示で、B列に含まれないA列の文字はC列に"その他"として出力することができました。 今回は、A列の文字とB列の文字が一致している場合は C列に文字を加え、A列B列ともに一致していない場合は そのままの表示を行いたいのですがどなたかご助言していただけると助かります。 A列   B列  C列 ------------------------ 赤   白   赤   白   緑   白組 黄       黄 緑       緑組 青       青 IF関数で行うことは可能なのでしょうか? 宜しくお願い致します。

  • MySQL&PHPで日本語検索

    PHP&MyQLでショッピングサイトを作ろうと制作中です。 今、MySQLで日本語検索ができず行き詰ってしまいました。 日本語を16進数に変換して検索させれば、うまくいきそうだと考えていますが、なかなかうまくいきません。 MySQLに登録した日本語データは「EUC」の文字コードを16進数に変換したものです。検索窓から入力した日本語の文字コードもEUCであれば、そのまま16進数に変換してマッチングしてやれば、検索できそうなのですが、 POSTで取得した日本語の文字コードが、どうしてもEUCになりません。 (mb_convert_encodingを使用してもだめだし・・・) POSTで取得した文字列の文字コードの変換は、どうすればいいのでしょうか?

    • ベストアンサー
    • PHP
  • javaの文字列検索について

    javaの文字列検索について教えて頂きたいです。 例で説明します。 String a = "a bc dd ef"; String b = "abcd"; String c = "xxx"; 上記のよう、aは空白がはいている文字列です。 bの内容をaの中に存在しているか(空白無視)を検索して、存在している場合はあたりの部分をcに置換する処理を作りたいです。 上記の例の場合、期待の結果は"xxxd ef"になります。 空白無視して検索、置換する方法が分からないので、教えて頂いてよろしいですか?

    • ベストアンサー
    • Java
  • エクセルの文字列の検索に関して

    また、エクセルに関しての質問です。 例えば  A B C D 1あ 1 2い 2 3う 3 4え 4 5お 5 6か 6 7き 7 8く 8 このような漢字で文字列が縦に入力されていて、  A B C D E 1あ 1   お 5 2い 2   う 3 3う 3 4え 4 5お 5 6か 6 7き 7 8く 8 このようにD列にある文字に対してA列にある文字で該当する文字を発見し横のBセルにある番号を取ってくるということがしたいです。 この場合だとD1は「お」なので、A列の上から見ていくとA5に「お」があるので、B5の数字「5」をEに入力といったような具合です。簡単なように見えますが、複数の文字列を横断的に検索することができません。 誰か詳しいお方お教え願います。

  • ヤフーで検索したときの文字コードを読めるように変換したい

    こんにちは。 ヤフーでキーワード検索すると、たとえば http://search.yahoo.co.jp/bin/search?p=%B8%A1%BA%F7&src=top というように「%B8%A1%BA%F7」という風になりますよね? (上の場合は「検索」という文字がこのように表示されます) この文字を普通に読めるように変換するにはどうしたらよいでしょうか? 文字コードはおそらくEUCだと思うのですが、 ファイル変換ソフトはありますが、文字列だけを変換する方法はなかなかありませんでした。 詳しい方お願いいたします。

  • 文字列検索で・・・

    Instr関数で文字列の存在チェックを行っています。 この場合、変数indexに1が入った場合 Instr("aaa1_a.sql","index") <----- この場合問題はないのですが、 Instr("aaa12_a.sql","index") <-----となる場合も値がとれてしまうので どうしたものかと困っています。 うまく検索させる方法はないでしょうか? ちなみに検索する文字列には aaa数字.sql aaa数字_a.sql aaa数字_b.sql というパターンがあります。 どなたかよきアドバイスをいただけませんでしょうか? よろしくお願い致します。

  • 文字列の検索について

    お世話になります。 エクセルでの検索及び結果の出し方について教えてください。 1枚目のシート    2枚目のシート A列           A列 1-1           1-4 1-2           2-1 1-3           1-2 1-4           1-3 とある場合、 2枚目シートのA列と同じものがある場合、1枚目シートのB列に以下のような結果を出したい場合の関数を教えて頂けないでしょうか。 1枚目のシート A列   B列 1-1    無 1-2    同 1-3    同 1-4    同 よろしくお願いいたします。

  • WSH 文字列検索

    こんばんわ WSHにて、あるコードに対して、 先頭の文字を見て、処理を分けたいと思っています。 例えば、以下の感じです。 コード:A9090 B8900 ・コード全体ではなく、最初の一文字だけを見て 判別する方法が分かりません。 お願いします。

専門家に質問してみよう