基本検索

基本検索ではマクロを使用した検索を行います。

基本検索

[検索文字列]

検索文字列を指定します。

[フォルダ]

検索対象のフォルダを指定します。「(すべてのフォルダ)」を選択すると全てのフォルダから検索します。

[サブフォルダも検索]

チェックすると[フォルダ]で指定したフォルダの全てのサブフォルダも検索対象になります。

[大文字小文字を区別する]

検索時に大文字と小文字を区別するかどうかを指定します。

[正規表現]

検索文字列が正規表現かどうかを指定します。

[すべてのヘッダを検索する]

すべてのヘッダを検索するかどうかを指定します。

[本文を検索する]

本文を検索するかどうかを指定します。

[マクロ]

検索文字列で指定された文字列をマクロとして処理し、そのマクロにマッチするメッセージを検索します。

[新しい検索フォルダを作成する]

通常、指定した条件がデフォルトの検索フォルダに設定され、その検索フォルダを開くことで検索結果を表示します。このチェックボックスにチェックを入れると、指定した条件で新たに検索フォルダを作成し、そのフォルダを開きます。検索フォルダについては、フォルダを参照してください。

マクロの生成方法

基本検索では指定された条件からマクロを生成し、そのマクロにマッチするメッセージを検索します。生成されるマクロは以下のように決定されます。

まず、[マクロ]にチェックを入れた場合には、[検索文字列]がそのままマクロになります。それ以外の場合、検索の設定の[マクロ]で指定したマクロを使用します。デフォルトでは、「@Or(@F(%Subject, $Search, $Case), @F(%From, $Search, $Case), @F(%To, $Search, $Case), @F(@Label(), $Search, $Case))」です。

$Searchは[検索文字列]で指定された文字列を以下のように扱った値になります。まず、[正規表現]がチェックされていない場合には、マクロの文字列リテラルになります。チェックされた場合には、正規表現リテラルになり[大文字小文字を区別する]にチェックが入っていない場合には、iオプションが指定されます。たとえば入力された文字が「foo*」だった場合には、

[正規表現]にチェックなし
"foo*"
[正規表現]にチェックあり
[大文字小文字を区別する]にチェックなし
/foo*/
[大文字小文字を区別する]にチェックあり
/foo*/i

のようになります。

$Caseは[大文字小文字を区別する]にチェックを入れた場合には真に、それ以外の場合には偽になります。また、$Regexは[正規表現]にチェックを入れた場合には真に、それ以外の場合には偽になります。

@Fは[正規表現]にチェックを入れた場合には@Defun('F', @RegexMatch($1, $2))、入れない場合には@Defun('F', @Contain($1, $2, $3)のように定義される関数です。

ここで指定されたマクロを@X()と考えると、検索時のマクロは以下のようになります。

@Progn(@Set('Search', <検索文字列>),
       @Set('Case', <大文字と小文字を区別する>),
       @Set('Regex', <正規表現>),
       @Defun('F', <検索関数>),
       @X())

さらに、[すべてのヘッダを検索する]や[本文を検索する]にチェックを入れた場合には、X()の代わりに以下のようなマクロが使われます。