• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:文字列検索)

テキストファイルの検索方法と性能について

このQ&Aのポイント
  • テキストファイルの検索を効率的に行いたい場合、関数でgrepを使用する方法があります。しかし、grepはマッチした行しか返さないため、1行内でのマッチ回数を返す関数は存在しません。
  • 大量のファイルを処理する場合には、mecabを用いて形態素解析を行うことも考えられます。ただし、オーバーヘッドが気になる場合もあるため、効率的な方法を選択する必要があります。
  • テキストファイル内の特定の文字列を検索する際には、標準関数を用いて1行ずつ読み込み、1行内でのマッチ回数を返す関数を自分で実装する必要があります。この方法を使用することで、検索性能を向上させることができます。

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

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

scanを利用すれば可能でしょうか? def counter d,w d.scan(%r{#{w}}).length if d.scan(%r{#{w}}).length > 0 end #1行ずつ読み込み、各行でマッチした個数を配列に格納し返す。 p open("sample.txt","r").each_line.map{|line| counter line,"foo" } #ファイルを全部読み込んで、マッチした個数を返す。 p counter File.read("sample.txt"),"foo"

関連するQ&A