された正規表現を解析して、検索結果には必ず含まれる固定文字列を抽出します。次のようなjpドメインのurlを検索する次の正規表現「https?://(www\.)?.*?\.jp/」にマッチする文字列には、固定値「http」が必ず含まれていることになります。そこで、Excel標準の検索機能でこの固定文字列「http」を検索して、ヒットしたセルにのみ、さらに、「https?://(www\.)?.*?\.jp/」での検査を行っています。全てのセルに対して、入力されたフル正規表現での検査を行うより、通常は速く処理できます。全てのセルや多くのセルに「http」が含まれている場合は、逆に遅くなります。(標準の検索による検査のスキップ数が少なくなるため)しかし、通常、検索作業を実施する場合は、対象全体から少数のものを探索することが多いと思われるため、多くの場合、高速に処理できます。デフォルトではこのExcel標準の検索を使用するようになっていますが、設定で使用しないようにもできます。マルチプロセスによる並列処理CPUがマルチプロセッサの場合、高速モードGrepがデフォルトでオンになっています。高速モードGrepでは、マルチプロセスでGrep作業を並列に実行します。具体的には、作業を監督するリーダー1人+作業者5人で作業します。作業者5人は、最初は均等に作業を分担しますが、速く自分の分が終わった人は、まだ終わっていない人の作業を引き取っていくようにして、トータルで速く終わるようにしています。リーダーから作業者への指示出し、作業者の作業終了後のリーダーのまとめ作業などがあるため、5人で実施しても、5倍の速さにはなりません。約2.5倍の速さになります。バックグラウンド処理(ver4.27〜)いくら神速といえども、数百ファイルをGrepするとなると数分間かかります。マシンパワーにもよりますが500ファイルもあれば5分くらいかかったりします。その間Excelが使用できなくなってしまうのは大変不便でした。そこでバックグラウンド処理も採用して、Grep終了待ち中もExcelでの作業を可能としました。マルチプロセスによる並列処理の例えを続けると、以下のようになります。従来は自分がリーダーをやっていたので、その監督作業中は自分の仕事を中断せざるを得ませんでした。このリーダー作業を別の人に任せることによって、自分は元の仕事を続けられるようになりました。経験型インデックスの使用また、高速モードGrepでは、経験型インデックスを使用します。経験型インデックスはGrepを実施するたびに蓄積されます。固定文字列検索の固定値が、あるファイルになかった場合、その情報を記録します。19:00:00、固定文字列キーワード「http」なしのようなイメージです。記録情報と照合します。その結果、前回までに存在しないことがわかっている場合、そのファイルの処理をスキップします。「前に検索して存在しなかった。ファイルは更新されていないので中身は同じ。