• ベストアンサー

文字列の検索アルゴリズム

「私は世界一頭がいいので、数学なんか簡単すぎていいかげん飽きてきた。」 この文字列から「いいかげん」を検索するアルゴリズムにはどんなものがあるのでしょうか? 条件 ・100KB(5万字)程度のデータから10文字程度指定文字列を検索する。 ・100KBと元データもそれほど大きくないので、プログラムが簡単なアルゴリズムが良い。 ・そのアルゴリズムの解説がインターネット上にあること。 単純に「い」を探して合致したら次の文字も「い」であることを確認。 さらに次の文字が「か」であることを確認。 さらに・・・「げ」・・「ん」 とやっていく方法でも良いとは思うのですが、もしかしたらもっとお手軽かつ高速にできる方法があるのかなと思い質問してみました。 なければないという回答でもかまいません。 また、参考までにテキストエディタ等がどのようなアルゴリズムを用いているのか知っている方(推測できる方)はその方法についても教えて頂ければと思います。 よろしくお願いします。

  • jyuzou
  • お礼率77% (238/307)

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

  • ベストアンサー
回答No.1

BM(Boyer-Moore)法

参考URL:
http://www.pc-view.net/Solution/040120/page74.html
jyuzou
質問者

お礼

リンク先読みました。 この方法でよさそうで、これで行こうかと思案中です。 迅速な回答ありがとうございました。

その他の回答 (1)

noname#29127
noname#29127
回答No.2

検索アルゴリズムについてはさっぱりですが、 下記ページの[検索・探索ルーチン]に詳しく書かれています。 http://www2.starcat.ne.jp/~fussy/algo/index.htm "grep 検索 アルゴリズム"などのキーワードでgoogleにて 色々見つかるかもしれません。

jyuzou
質問者

お礼

リンク先ぱっと見少し難しそうですが、時間があるときにでも読んでみたいと思います。 回答ありがとうございます。

関連するQ&A

  • 文字列の検索高速化について

    大容量の文字列から文字列を検索するのに四苦八苦しております。 現在は文字列を構造体→メモリを確保でなんとかやっておりますが、データの容量が大きい為、時間が掛かりすぎてしまいます。 データ 70文字×30000行程度(行数可変)の文字列ファイル(すべて半角英数) 検索する側、検索される側共に同じファイルを使用します。 検索する側から一行ずつ文字列を取得→特定のカラムから文字列を抜き出す→検索される側からヒットした行を抜き出す→別処理を行う (検索に使用した行はスルー、検索される側には検索文字列が複数存在する可能性あり→すべて抜き出したい) また、抜き出した行は検索する側、される側共に次以降二重処理して速度が遅くなってしまうかと思うので、できれば削除したい。(現在は二重処理も致仕方ないとしてそのままやっています) 過去ログを読むとハッシュテーブルが良いかと言われていますが、このような場合はどのようなアルゴリズムが良いのでしょうか。 質問がわかりずらく申し訳ないですが、アドバイスを頂ければと思います。 また、使用方法等が詳しく記載されているページ等がありましたら教えて頂ければ幸いです。

  • eclipseエディタでの文字列検索について

    eclipseエディタでの文字列検索について eclipse(GALILEO)のエディタで開いたソースコードの中を文字列で検索する(Ctrl+F)場合についてです。 この時に表示される検索用ダイアログ(添付画像)で「Findボタン」などをクリックしてマウス操作をすることなく、キー入力だけで次々と検索対象を移動したいのですが、ショートカットキーは何でしょうか? 次のショートカットキーを知りたいです。 (1)次の検索対象に移動する。 (2)前の検索対象に戻る。 (3)検索が最後まで到達した場合、最初に戻る。 どうぞよろしくお願いします。

    • ベストアンサー
    • Java
  • VBE上の文字検索で「パターン文字列が不正です」

     今晩は、質問させていただきます。どうぞよろしくお願いいたします。  環境:Win7 Home SP1      Excel2007 でございます。  VBエディタ上のプログラムの文字列をCtrl+Fから検索いたしますと、 何故か「パターン文字列が不正です。」のメッセージボックスが出てまいります。 挙動といたしましては、 ・検索しております文字列は、明らかにコード上にあるものでございます。 ・テキストエディタ(秀丸)上に全コードをコピーしてみると、その上での検索は普通にできます。  (→おそらくVBエディタ上のみでの不具合。) ・検索する文字によっては検索できたりもしますが、それらも何故か  検索結果(背景が青くなる文字列)が後ろへずれております。(全角1文字もしくは2文字分)  →添付図のようになります。 ・全角漢字も半角英字も検索ができなかったり、検索結果がズレたり致します。  「パターン文字列が不正です」で検索しておりますと、「VBAによる検索」の際に、LKEを使うとこのようなコメントが出るようでございますが、今回のような「VBエディタ上のコード検索」は見つけられませんでした。。。  皆様のPC上でこのような挙動をしたことはございますでしょうか??  もしお詳しい方がいらっしゃいましたら,どうぞよろしくお願いいたします。

  • Excelの文字列検索

    Excelの初心者です。申し訳ありませんが、次の件でどなたか教えていただけませんか? エクセルシートには、例えば下記のような文字列の並びがあります。      1       2       3    … 1  文字列11  文字列12  文字列13 2  文字列21  文字列22  文字列23 … 各セルはプルダウンリストにて幾つかの異なった文字列がリストアップされてあります。 各セルの文字列をリストから選び、4列目以降にリストの組み合わせに完全に合致するような結果を示したいと考えております。このようなシートを作成するにあたり、御知恵をいただければありがたく思います。 上記の件、どうぞよろしくお願いいたします。

  • 文字列から文字列を検索するプログラム

    現在、C言語を学習しています。 文字列から文字列を検索する関数に「strstr]がありますが、自作関数として自分で作成する方法を考えております。 文字列から文字を検索する事は出来たのですが、文字列を検索するシーケンスがわかりません。 有識者の方、御教授よろしく御願い致します。

  • ファイルからの文字列を検索

    テキストファイルを読み込み、任意の文字列を探すプログラムを作成しました。 これを改良し、ワイルドカード入力をした場合、*をa~zとA~Zに変えて、それぞれで検索しようとしています。ワイルドカードにはいる文字は1文字です。 「a*」と検索すれば「aa」、「ab」~「az」、「aA」、「aB」~「aZ」と検索し、合致したものを出力したいのです。 回答が欲しいとは思いますが、ヒントや考え方など何でも結構ですので、お力添えをお願いいたします。

  • 含まれる文字列の検索

    ソースコードに「<title></title>」が含まれているhtmファイルを見つけるために、「スタート」→「検索」→「含まれる文字列の検索」に「<title></title>」を指定して検索しても、そのhtmファイルがヒットしません。 同じフォルダーをWin2000で同じ方法で検索するとヒットします。 「含まれる文字列の検索」の検索対象について何か設定があるのでしょうか?

  • ASPの文字列検索

    文字列検索のプログラムを書いています。読み込むファイルには商品名=¥100のような形でデータが入っています。入力された商品名の値段だけを取得したいのです。自分が考えたのは、まず商品名を含んでいるかどうかを見て、含んでいたらまずその文字列の長さを取得して、次にイコールまでの長さを取得し、Rightで(全体の長さ-イコールまでの文字列の長さ)分の文字列を取得しようと考えたのですが、似たような商品名があると複数反応してしまうのです。例えばsampleとsample1があったらsampleと入力すると両方に反応してしまうのです。完全一致で探したいのですが、どうしたらいいでしょうか?

  • バイナリエディタのstirlingで文字列を検索したいのですが、やりか

    バイナリエディタのstirlingで文字列を検索したいのですが、やりかたがわかりませんご存知の方宜しくお願いします。

  • EXCEL・ 2つの列内にある文字データで一致するものを検索する方法

    始めまして 例えば 下記の様にA列内の文字データ(数字ですが実際には文字列) とB列内の文字データが同じものを検索する方法です。 C列に同じデータがあれば○と表示する方法でもいいです。 この場合123は検索対象となるので1行目のC列又は2行目のC列に 印か文字を表示させたいです。    A列 B列 1行 123 111 2行 456 123 3行 789 222 よろしくお願いします。