<?xml version="1.0" encoding="UTF-8"?>
<article id="Filters">
  <title>フィルターの使用<indexterm>
      <primary>フィルター</primary>

      <seealso>ファイルフィルター</seealso>

      <seealso>ファイルマスク</seealso>

      <seealso>行フィルター</seealso>

      <seealso>置換フィルタ</seealso>
    </indexterm></title>

  <para>ファイルやフォルダー比較の際、比較範囲を限定するためにファイルフィルターを使用することができます。
これは、比較結果から、あなたが興味のない差異を取り除きたい場合に便利です。 フィルターは、正規表現を基づいて定義されます。 WinMerge
は、一般的に広く使われている PCRE (Perl Compatible Regular Expressions)
正規表現エンジンを使用しています。<indexterm>
      <primary>正規表現</primary>

      <secondary>サポートされているエンジン</secondary>
    </indexterm><indexterm>
      <primary>PCRE正規表現エンジン</primary>
    </indexterm><indexterm>
      <primary>正規表現</primary>

      <see>正規表現</see>
    </indexterm></para>

  <para>フィルターの基本機能はシンプルです。 比較対象となる各項目(フォルダー、ファイル、ファイル中の行)を評価し、
対象の項目がフィルター式にマッチした場合、フィルターを適用します。 フィルタータイプにより、項目は、比較に含められるか、除外されるかのどちらかです。</para>

  <para>フォルダー比較用とファイル比較用の異なるWinMergeフィルターがあります。</para>

  <variablelist>
    <varlistentry>
      <term>フォルダー比較: ファイルマスクとファイルフィルター<indexterm>
          <primary>フォルダーの比較</primary>

          <secondary>フィルタリング</secondary>
        </indexterm></term>

      <listitem>
        <para>単純なファイルマスク、または、より複雑なフィルターにより、 ファイルフィルター中で指定された複数の規則を適用することで、
フォルダー比較中に含めるファイルを指定することができます。 </para>

        <para>フィルターされるファイルやフォルダーは、デフォルトで隠されます。それは、典型的にあなたが望むものでしょう。フィルターされたアイテムを表示するには、<menuchoice><guimenu>表示</guimenu><guimenuitem>スキップされた項目の表示</guimenuitem></menuchoice>をクリックしてください。しかし、フォルダー比較ウィンドウは、それらについて最小限の情報しか表示しません。例えば、あなたは、スキップされたファイルがテキストファイルかバイナリファイルか判らないでしょう。</para>

        <para>表示ファイル/フォルダーフィルターはフォルダー比較操作でも利用できます。ファイルフィルターとは異なり、比較結果には影響しません。フォルダー比較ウィンドウに表示されるアイテムを制御するだけです。<xref
linkend="Filters_DisplayFileFolderFilter"/> を参照してください。</para>
      </listitem>
    </varlistentry>

    <varlistentry>
      <term>ファイル比較: 行フィルターと置換フィルター<indexterm>
          <primary>ファイルの比較</primary>

          <secondary>フィルタリング</secondary>
        </indexterm></term>

      <listitem>
        <para>行フィルターは、ファイル比較操作のみに適用されます。 それにより、単一行の差異を無視することができます。</para>
        <para>置換フィルターは、ファイル比較操作のみに適用されます。 置換フィルターは、diffブロック内の文字列を指定された文字列に置換して比較し、
結果が一致する場合はそのdiffブロックを無視します。 これは、興味のない多数の変更を無視するのに役立ちます。</para>
        <para>表示行フィルターもファイル比較操作にのみ適用されます。行フィルターとは異なり、比較結果には影響しません。ファイル比較ウィンドウに表示される行を制御するだけです。<xref
linkend="Filters_DisplayLineFilter"/> を参照してください。</para>
      </listitem>
    </varlistentry>
  </variablelist>

  <section id="Filters_Mask">
    <title>ファイルマスクの使用<indexterm>
        <primary>ファイルマスク</primary>
      </indexterm><indexterm>
        <primary>フィルター</primary>

        <secondary>ファイルマスク</secondary>
      </indexterm><indexterm>
        <primary>フィルター</primary>

        <secondary>フォルダー比較で</secondary>
      </indexterm></title>

    <para>フォルダー比較で含めるファイル拡張子を指定するために、1つ以上の<glossterm>ファイルマスク</glossterm>を使用できます。その他のファイルは選択対象から除外されます。</para>

    <section id="Filters_MaskApply">
      <title>ファイルマスクと定義と適用<indexterm>
          <primary>コマンドライン</primary>

          <secondary>ファイルマスクの適用</secondary>
        </indexterm></title>

      <para>フォルダー比較操作を実行時に、ファイルマスクを定義し適用する:</para>

      <itemizedlist>
        <listitem>
          <para>ファイルまたはフォルダーの選択ダイアログを使用しているなら、 <guilabel>1(左)</guilabel>と
<guilabel>2(右)</guilabel>のフォルダー選択後、 <guilabel>フィルター</guilabel>フィールドへ、
1つか複数のファイルマスクを入力してください。 マスクは、フォルダー比較操作を開始した時に適用されます。</para>
        </listitem>

        <listitem>
          <para>WinMergeのコマンドラインを使用している場合は、ファイルマスクを指定する
<option>-f</option>フラグ(次のセクションの例を参照)を使用してください。</para>
        </listitem>
      </itemizedlist>
    </section>

    <section id="Filters_MaskSyntax">
      <title>ファイルマスクの文法と例<indexterm>
          <primary>ルール</primary>

          <secondary>ファイルマスク</secondary>
        </indexterm><indexterm>
          <primary>フィルター</primary>

          <secondary>ファイルマスク</secondary>
        </indexterm><indexterm>
          <primary>正規表現</primary>

          <secondary>ファイルマスク内</secondary>
        </indexterm></title>

      <para>ファイルマスクや拡張フィルターは以下の形式で指定できます:</para>

      <synopsis>
        <replaceable>グループ1のフィルター1</replaceable>;<replaceable>フィルター2</replaceable> ...|<replaceable>グループ2のフィルター1</replaceable>;<replaceable>フィルター2</replaceable> ...|...
      </synopsis>

      <itemizedlist>
        <listitem><para><filename>|</filename> 文字はフィルターグループを区切り、論理 AND として機能します。</para></listitem>
        <listitem><para>同じグループ内のフィルターは <filename>;</filename> で区切られ、論理 OR として解釈されます。</para></listitem>
        <listitem><para>ファイルは各グループ内の少なくとも1つのフィルターに一致する場合にのみ含まれます。</para></listitem>
        <listitem>
          <para><filename>f:</filename> や <filename>f!:</filename> など、ダブルクォートで囲まれていない正規表現内で
<filename>|</filename>（パイプ）文字をリテラルとして使用したい場合は、代わりに <filename>||</filename>
を使用してください。</para>
          <para>例: <userinput>f:(abc||def)\.txt$</userinput></para>
        </listitem>
        <listitem>
          <para>各フィルター（例: Filter1, Filter2）は、以下のいずれかのタイプにすることができます:</para>
          <variablelist>
            <varlistentry><term><replaceable>*.ext</replaceable></term><listitem><para>拡張子によるファイルマスク（例: *.txt）</para></listitem></varlistentry>
            <varlistentry><term><replaceable>*.</replaceable></term><listitem><para>拡張子のないファイル（例: README）</para></listitem></varlistentry>
            <varlistentry><term>!<replaceable>*.ext</replaceable></term><listitem><para>指定した拡張子に一致するファイルを除外（2.16.19 以降で使用可能）</para></listitem></varlistentry>
            <varlistentry><term><replaceable>folder</replaceable>\</term><listitem><para>対象フォルダー（末尾は必ず \ にする）（2.16.19 以降で使用可能）</para></listitem></varlistentry>
            <varlistentry><term>!<replaceable>folder</replaceable>\</term><listitem><para>一致するフォルダーを除外（2.16.19 以降で使用可能）</para></listitem></varlistentry>
            <varlistentry><term>f: <replaceable>正規表現</replaceable></term><listitem><para>正規表現を使用してファイル名を一致（2.16.49 以降で使用可能）</para></listitem></varlistentry>
            <varlistentry><term>f!: <replaceable>正規表現</replaceable></term><listitem><para>正規表現に一致するファイルを除外（2.16.49 以降で使用可能）</para></listitem></varlistentry>
            <varlistentry><term>d: <replaceable>正規表現</replaceable></term><listitem><para>正規表現を使用してフォルダー名を一致（2.16.49 以降で使用可能）</para></listitem></varlistentry>
            <varlistentry><term>d!: <replaceable>正規表現</replaceable></term><listitem><para>正規表現に一致するフォルダーを除外（2.16.49 以降で使用可能）</para></listitem></varlistentry>
            <varlistentry><term>fe: <replaceable>式</replaceable></term><listitem><para>ファイルに対するフィルター式（例: fe:Size &lt; 1KB）（2.16.49 以降で使用可能）</para></listitem></varlistentry>
            <varlistentry><term>fe!: <replaceable>式</replaceable></term><listitem><para>ファイルを除外するためのフィルター式（2.16.49 以降で使用可能）</para></listitem></varlistentry>
            <varlistentry><term>de: <replaceable>式</replaceable></term><listitem><para>フォルダーに対するフィルター式（2.16.49 以降で使用可能）</para></listitem></varlistentry>
            <varlistentry><term>de!: <replaceable>式</replaceable></term><listitem><para>フォルダーを除外するためのフィルター式（2.16.49 以降で使用可能）</para></listitem></varlistentry>
            <varlistentry><term>pf: <replaceable>ファイルフィルター名</replaceable></term><listitem><para>名前でファイルフィルターを適用（2.16.49 以降で使用可能）</para></listitem></varlistentry>
          </variablelist>
        </listitem>
      </itemizedlist>

      <example>
        <title>ファイルマスク</title>

        <para>このコマンドラインの例では、フォルダー比較操作は拡張子 <filename>xml</filename> または
<filename>txt</filename> のファイルのみを対象とし、それ以外のファイルは省略されます。</para>

        <para><userinput>WinMergeU c:\project\docs c:\temp /f *.xml;*.txt</userinput></para>
      </example>

      <example>
        <title>フォルダーの除外(2.16.19以降)</title>

        <para>このコマンドラインの例では、フォルダー比較操作は、 <filename>.git</filename>と
<filename>.vs</filename>フォルダーを除外します:</para>

        <para><userinput>WinMergeU c:\project\docs c:\temp /f !.git\;!.vs\</userinput></para>
      </example>

      <example>
        <title>フィルター式（バージョン 2.16.49 以降）</title>

        <para>このコマンドラインの例では、フォルダー比較操作は <filename>cpp</filename> または <filename>h</filename>
の拡張子を持ち、かつサイズが 1KB 未満のファイルのみを対象とします:</para>

        <para><userinput>WinMergeU c:\project\docs c:\temp /f "*.cpp;*.h|fe:Size &lt;
1KB"</userinput></para>
      </example>
    </section>

    <section id="FilterExpression_Syntax">
      <title>フィルタ式の構文</title>

      <para>
WinMerge
では、ファイルのメタデータ、内容、比較コンテキストに対して動作する強力なフィルタ式を使用できます。本セクションでは、サポートされる属性、演算子、関数、データ型、および評価ルールについて説明します。</para>

      <section id="FilterExpression_Literals">
        <title>リテラルと型</title>

        <para>サポートされるリテラルの型は以下の通りです:</para>
        <itemizedlist>
          <listitem><para><emphasis>Boolean</emphasis>:
<literal>true</literal>、<literal>false</literal></para></listitem>
          <listitem><para><emphasis>Null</emphasis>: <literal>none</literal>（null または欠損値を表します）</para></listitem>
          <listitem><para><emphasis>Integer</emphasis>: 64ビット符号付き整数 (例: <literal>1024</literal>,
<literal>100KB</literal>, <literal>7days</literal> などの単位付きも可能)</para></listitem>
          <listitem><para><emphasis>Real (Double)</emphasis>: 小数点または指数部を任意に含む浮動小数点数 (例:
<literal>3.14</literal>, <literal>.5</literal>, <literal>1e6</literal>)</para></listitem>
          <listitem><para><emphasis>String</emphasis>: ダブルクォートで囲まれた文字列 (例:
<literal>"example"</literal>)</para></listitem>
          <listitem><para><emphasis>Date/Time</emphasis>: <literal>d</literal> プレフィックスを付けてダブルクォートで囲みます
(例: <literal>d"2026-05-21
07:16:33"</literal>、<literal>d"2026-05-21"</literal>)</para></listitem>
        </itemizedlist>

        <para>
内部的に扱われる型は以下の通りです: Boolean, Integer, Real, Timestamp, String, File Content,
Array, or <literal>none</literal>.</para>
      </section>

      <section id="FilterExpression_Directives">
        <title>ディレクティブ</title>

        <para>
フィルタ式は、式の評価方法を制御するディレクティブをサポートしています。ディレクティブは式の先頭に指定し、<literal>@</literal>
を付けて記述し、式本体とは空白で区切ります。</para>

        <section id="FilterExpression_CaseSensitivity">
          <title>大文字小文字の区別に関するディレクティブ</title>

          <para>
デフォルトでは、すべての文字列比較演算子（<literal>=</literal>、<literal>!=</literal>、<literal>&lt;</literal>、<literal>&lt;=</literal>、<literal>&gt;</literal>、<literal>&gt;=</literal>、<literal>contains</literal>、<literal>recontains</literal>、<literal>like</literal>、<literal>matches</literal>）は大文字小文字を区別しません。この動作は次のディレクティブで制御できます。</para>

          <variablelist>
            <varlistentry>
              <term><literal>@cs</literal>, <literal>@casesensitive</literal></term>
              <listitem>
                <para>
大文字小文字を区別する比較を有効にします。これらのディレクティブを指定すると、<literal>"ABC"</literal> と
<literal>"abc"</literal> は異なるものとして扱われます。</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><literal>@ci</literal>, <literal>@caseinsensitive</literal></term>
              <listitem>
                <para>
大文字小文字を区別しない比較を有効にします（デフォルトの動作）。これらのディレクティブを指定すると、<literal>"ABC"</literal> と
<literal>"abc"</literal> は同一として扱われます。</para>
              </listitem>
            </varlistentry>
          </variablelist>

          <example>
            <title>大文字小文字の区別の例</title>
<programlisting>@cs Name = "README.txt"           ## 大文字小文字を区別: "README.txt" のみ一致
@ci Name = "readme.txt"           ## 大文字小文字を区別しない: "README.txt", "readme.txt", "ReadMe.TXT" などに一致
@casesensitive Extension = "TXT"  ## 大文字小文字を区別: 拡張子 ".TXT" のファイルのみ一致
@caseinsensitive Content contains "error"  ## 大文字小文字を区別しない: "Error", "ERROR", "error" などに一致</programlisting></example>
        </section>

        <section id="FilterExpression_Optimize">
          <title>最適化ディレクティブ</title>

          <para>
デフォルトでは、フィルタ式はパフォーマンス向上のために最適化されます。この動作は次のディレクティブで制御できます。</para>

          <variablelist>
            <varlistentry>
              <term><literal>@optimize</literal>, <literal>@opt</literal></term>
              <listitem>
                <para>
フィルタ式の最適化を有効にします（デフォルトの動作）。複雑な式の場合、パフォーマンスが向上する可能性があります。</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><literal>@nooptimize</literal>, <literal>@noopt</literal></term>
              <listitem>
                <para>
フィルタ式の最適化を無効にします。デバッグ時や、最適化によって予期しない結果が発生する場合に役立ちます。</para>
              </listitem>
            </varlistentry>
          </variablelist>

          <example>
            <title>最適化の例</title>
<programlisting>@optimize Size &gt; 10MB and Extension = "log"     ## 最適化を有効（デフォルト）
@noopt Name matches "complex[0-9]+pattern"    ## デバッグのため最適化を無効
@nooptimize Content contains "special-case"   ## 最適化を無効</programlisting></example>
        </section>

        <section id="FilterExpression_Name">
          <title>Name ディレクティブ</title>

          <para>
<literal>@name</literal>
ディレクティブを使用すると、フィルタ式に説明用の名前を付けることができます。この名前はエラーメッセージやログで使用され、どのフィルタ式が問題を引き起こしたかを識別するのに役立ちます。</para>

          <variablelist>
            <varlistentry>
              <term><literal>@name="Filter Name"</literal>, <literal>@name=FilterName</literal></term>
              <listitem>
                <para>
フィルタ式に名前を付けます。名前に空白や特殊文字を含む場合は、二重引用符で囲む必要があります。空白を含まない名前は引用符なしで指定できます。</para>
                <para>
指定した名前は、エラーメッセージや診断出力でフィルタを識別するために使用されます。複数の複雑なフィルタ式を扱う場合に特に便利です。</para>
              </listitem>
            </varlistentry>
          </variablelist>

          <example>
            <title>Name ディレクティブの例</title>
<programlisting>@name="Large Image Files" Size &gt; 10MB and Extension = "png"
@name=SmallTextFiles Size &lt; 1KB and Extension = "txt"
@name="Modified Today" Date &gt;= today()
@name="Test Filter" @cs Name like "test_*.cpp"</programlisting></example>

          <note>
            <para>
<literal>@name</literal>
ディレクティブは他のディレクティブと組み合わせて使用できます。複数のディレクティブを使用する場合は、すべて式の先頭に記述し、空白で区切ります。</para>
          </note>
        </section>
      </section>

      <section id="FilterExpression_Attributes">
        <title>Attributes</title>

        <para>
フィルタ式では、ファイルのメタデータや内容を参照する多様な属性が利用できます。属性名の大文字・小文字は区別されません。必要に応じて、比較対象のどの側（Left,
Right, Middle）かを接頭辞で指定できます。</para>

        <section>
          <title>コア属性</title>
          <variablelist>
            <varlistentry>
              <term><varname>Exists</varname></term>
              <listitem><para>ファイルが存在する場合は <literal>true</literal> を返し、存在しない場合は <literal>false</literal>
を返します。</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><varname>Name</varname></term>
              <listitem><para>ファイル名</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><varname>BaseName</varname></term>
              <listitem><para>拡張子を除いたファイル名を返します。たとえば、"document.txt" は "document" を返します。</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><varname>Extension</varname></term>
              <listitem><para>ファイル拡張子</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><varname>IsFolder</varname></term>
              <listitem><para>項目がフォルダー/ディレクトリの場合は true を返し、ファイルの場合は false を返します。</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><varname>Folder</varname></term>
              <listitem><para>ファイル名およびベースフォルダーを除いた相対パスを返します。</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><varname>RelPath</varname></term>
              <listitem><para>比較ルートディレクトリからの相対パスを、フォルダーパスとファイル名を含めて返します。例えば、"C:\Project" を比較していて、ファイルが
"C:\Project\src\main.cpp" にある場合、RelPath は "src\main.cpp" を返します。</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><varname>FullPath</varname></term>
              <listitem><para>ファイルのフルパスを返します。</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><varname>Size</varname></term>
              <listitem><para>ファイルサイズ</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><varname>Date</varname></term>
              <listitem><para>最終更新のタイムスタンプ</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><varname>DateStr</varname></term>
              <listitem><para><literal>yyyy-MM-dd</literal> 形式の最終更新日付の文字列を返します。</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><varname>CreationTime</varname></term>
              <listitem><para>作成日時のタイムスタンプを返します。</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><varname>Attributes</varname></term>
              <listitem><para>ファイル属性を整数値で返します。</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><varname>AttrStr</varname></term>
              <listitem>
                <para>ファイル属性の文字列を返します。例：<literal>"R"</literal> は読み取り専用、<literal>"H"</literal>
は隠しファイル、<literal>"A"</literal> はアーカイブ、<literal>"S"</literal> はシステムファイルを示します。</para>
              </listitem>
            </varlistentry>
          </variablelist>
        </section>

        <section>
          <title>ファイルのみ属性</title>
          <para>
以下の属性は、ファイル比較項目にのみ使用できます。フォルダー項目に使用した場合の動作は未定義です。</para>

          <variablelist>
            <varlistentry>
              <term><varname>Content</varname></term>
              <listitem><para>ファイルの内容を表します。FileContent 型の値を返します。この型には <literal>contains</literal> および
<literal>recontains</literal> のみ使用できます。</para></listitem>
            </varlistentry>
          </variablelist>
        </section>

        <section>
          <title>フォルダーのみ属性</title>
          <para>
以下の属性は、フォルダー比較項目にのみ使用できます。ファイル項目に使用した場合の動作は未定義です。</para>

          <variablelist>
            <varlistentry>
              <term><varname>Files</varname></term>
              <listitem><para>フォルダーに直接含まれるファイル数。</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><varname>RecursiveFiles</varname></term>
              <listitem><para>すべてのサブフォルダーを含めた、フォルダー内のファイル総数。</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><varname>Items</varname></term>
              <listitem><para>フォルダーに直接含まれる項目（ファイルおよびサブフォルダー）の数。</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><varname>RecursiveItems</varname></term>
              <listitem><para>すべてのサブフォルダーを含めた、フォルダー内の項目（ファイルおよびサブフォルダー）の総数。</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><varname>TotalSize</varname></term>
              <listitem><para>フォルダーに直接含まれるすべてのファイルの合計サイズ（バイト単位）。</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><varname>RecursiveTotalSize</varname></term>
              <listitem><para>すべてのサブフォルダーを含めた、フォルダー内のすべてのファイルの合計サイズ（バイト単位）。</para></listitem>
            </varlistentry>
          </variablelist>
        </section>

        <section>
          <title>比較対象の側を指定する接頭辞</title>
          <para>
比較対象のファイルの側を指定するために、接頭辞を追加できます:</para>
          <itemizedlist>
            <listitem><para><emphasis>Left</emphasis>: 左側のファイルに適用されます（例: <literal>LeftSize</literal>）</para></listitem>
            <listitem><para><emphasis>Right</emphasis>: 右側のファイルに適用されます（例: <literal>RightDate</literal>）</para></listitem>
            <listitem><para><emphasis>Middle</emphasis>: 3方向比較における中央のファイルに適用されます（例:
<literal>MiddleName</literal>）</para></listitem>
          </itemizedlist>

          <para>
接頭辞のない属性（例: <literal>Size</literal>）は、左・中央・右のすべての側の値を含む配列を返します。</para>
        </section>

        <section>
          <title>Windows プロパティ属性</title>
          <para>
これらの属性は、Windows プロパティ システムで定義されたメタデータ （例:
<literal>System.Title</literal>、<literal>System.FileOwner</literal>、<literal>System.Image.HorizontalResolution</literal>
など）にアクセスするためのものです。</para>

          <variablelist>
            <varlistentry>
              <term><varname>Prop</varname></term>
              <listitem>
                <para>
指定した正規プロパティ名に対応するプロパティ値の配列（Left、Middle、Right）を返します。例:
<literal>prop("System.Title")</literal></para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><varname>LeftProp</varname></term>
              <listitem>
                <para>
左側のファイルのプロパティ値を返します。例: <literal>leftprop("System.FileOwner")</literal></para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><varname>MiddleProp</varname></term>
              <listitem>
                <para>中央のファイル（3-way 比較時）のプロパティ値を返します。</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><varname>RightProp</varname></term>
              <listitem>
                <para>右側のファイルのプロパティ値を返します。</para>
              </listitem>
            </varlistentry>
          </variablelist>
        </section>

        <section>
          <title>表示フィルター専用の属性</title>
          <para>
以下の属性は<emphasis role="bold">表示フィルター専用</emphasis>として設計されています（フィルター欄で
<guilabel>e:</guilabel>、<guilabel>e!:</guilabel>、<guilabel>fe:</guilabel>、<guilabel>fe!:</guilabel>、<guilabel>de:</guilabel>、<guilabel>de!:</guilabel>
プレフィックスを指定）。これらは比較が完了していることを前提とするため、ファイルフィルター（<filename>.flt</filename>）のインクルード／エクスクルードルールでは使用しないでください。予期しない動作の原因となる可能性があります。</para>

          <variablelist>
            <varlistentry>
              <term><varname>Identical</varname></term>
              <listitem>
                <para>
比較結果が項目が同一であることを示す場合は <literal>true</literal>、それ以外の場合は
<literal>false</literal> を返します。これはグローバル属性（サイド別プレフィックスは使用不可）です。例:
<literal>Identical</literal> と指定すると同一ファイルのみを表示します。</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><varname>Different</varname></term>
              <listitem>
                <para>
比較結果が項目が異なることを示す場合は <literal>true</literal>、それ以外の場合は
<literal>false</literal> を返します。これはグローバル属性（サイド別プレフィックスは使用不可）です。例:
<literal>Different</literal> と指定すると差異のあるファイルのみを表示します。</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><varname>Skipped</varname></term>
              <listitem>
                <para>
エラーやフィルタールールにより比較がスキップされた場合は <literal>true</literal>、それ以外の場合は
<literal>false</literal> を返します。これはグローバル属性（サイド別プレフィックスは使用不可）です。例:
<literal>Skipped</literal> と指定するとスキップされた項目のみを表示します。</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><varname>Binary</varname></term>
              <listitem>
                <para>
ファイルがバイナリとして検出された場合は <literal>true</literal>、テキストの場合は
<literal>false</literal>、ファイルが存在しない場合は <literal>none</literal>
を返します。この属性はサイド別プレフィックス（例:
<literal>LeftBinary</literal>、<literal>RightBinary</literal>）に対応しています。例:
<literal>allof(Binary)</literal> と指定すると、すべての側でバイナリであるファイルを表示します。</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><varname>DifferentLeftMiddle</varname></term>
              <listitem>
                <para>
3方向比較において左と中央のファイルが異なる場合は <literal>true</literal>、それ以外は
<literal>false</literal> を返します。2方向比較では <literal>none</literal>
を返します。これはグローバル属性（サイド別プレフィックスは使用不可）です。例: <literal>DifferentLeftMiddle and not
DifferentMiddleRight</literal> と指定すると、左のみが中央と異なるファイルを見つけることができます。</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><varname>DifferentMiddleRight</varname></term>
              <listitem>
                <para>
3方向比較において中央と右のファイルが異なる場合は <literal>true</literal>、それ以外は
<literal>false</literal> を返します。2方向比較では <literal>none</literal>
を返します。これはグローバル属性（サイド別プレフィックスは使用不可）です。例:
<literal>DifferentMiddleRight</literal> と指定すると、中央と右が異なるファイルを表示します。</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><varname>DifferentLeftRight</varname></term>
              <listitem>
                <para>
3方向比較では左と右のファイルが異なる場合に <literal>true</literal>、それ以外は
<literal>false</literal> を返します。2方向比較では両方のファイルが存在し、かつ異なる場合に
<literal>true</literal> を返します。これはグローバル属性（サイド別プレフィックスは使用不可）です。例:
<literal>DifferentLeftRight</literal> と指定すると、左と右が異なるファイルを表示します。</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><varname>Differences</varname></term>
              <listitem>
                <para>
ファイル比較におけるテキスト差分の数を返します。この属性は比較済みのテキストファイルに対してのみ有効です。これはグローバル属性（サイド別プレフィックスは使用不可）です。例:
<literal>Differences &gt; 0</literal>
と指定すると差分のあるファイルを表示し、<literal>Differences &gt; 10</literal>
と指定すると差分が10個を超えるファイルを表示します。</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><varname>IgnoredDiffs</varname></term>
              <listitem>
                <para>
ファイル比較において無視された差分の数（行フィルターや空白設定により除外された差分）を返します。この属性は比較済みのテキストファイルに対してのみ有効です。これはグローバル属性（サイド別プレフィックスは使用不可）です。例:
<literal>IgnoredDiffs &gt; 0</literal>
と指定すると無視された差分があるファイルを表示し、<literal>Differences = 0 and IgnoredDiffs &gt;
0</literal> と指定すると無視された差分を除けば同一であるファイルを表示します。</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><varname>Unpacker</varname></term>
              <listitem>
                <para>
ファイル比較に使用された展開プラグインの名前を返します。展開プラグインが使用されていない場合は空文字列を返します。これはグローバル属性であり（左右別のプレフィックスには対応していません）。例:
<literal>Unpacker = "CompareMSExcelFiles"</literal> は Excel
展開プラグインを使用して比較されたファイルを表示し、<literal>Unpacker != ""</literal>
は展開プラグインが使用されたすべてのファイルを表示します。</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><varname>Prediffer</varname></term>
              <listitem>
                <para>
ファイル比較に使用された比較前処理プラグインの名前を返します。比較前処理プラグインが使用されていない場合は空文字列を返します。これはグローバル属性であり（左右別のプレフィックスには対応していません）。例:
<literal>Prediffer = "IgnoreColumns"</literal> は IgnoreColumns
比較前処理プラグインを使用して比較されたファイルを表示し、<literal>Prediffer != ""</literal>
は比較前処理プラグインが使用されたすべてのファイルを表示します。</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><varname>EOL</varname></term>
              <listitem>
                <para>行末 (EOL) スタイルを整数値として返します。ファイルに対しては主要な EOL スタイルを返し、行に対してはその行の EOL スタイルを返します。</para>
                <para>値: 0 = なし、1 = LF (Unix)、2 = CR (Mac)、3 = CRLF (Windows)、4 = 混在（ファイル内に複数の EOL
スタイルあり）</para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term><varname>EOLStr</varname></term>
              <listitem>
                <para>行末（EOL）の形式を文字列として返します。ファイルの場合は、そのファイルで主に使用されている行末形式を返し、行の場合は、その特定の行の行末形式を返します。</para>
                <para>行末 (EOL) スタイルを文字列として返します。ファイルに対しては主要な EOL スタイルを返し、行に対してはその行の EOL スタイルを返します。</para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term><varname>Codepage</varname></term>
              <listitem>
                <para>
ファイルのコードページ（文字エンコーディング）を整数値で返します。この属性はサイド別プレフィックス（例:
<literal>LeftCodepage</literal>、<literal>RightCodepage</literal>）に対応しています。例:
<literal>Codepage = 65001</literal> と指定すると UTF-8
のファイルを表示し、<literal>allof(Codepage = 65001)</literal> と指定するとすべての側で UTF-8
のファイルを表示します。</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term><varname>HasBOM</varname></term>
              <listitem>
                <para>
ファイルに Byte Order Mark（BOM）がある場合は <literal>true</literal>、それ以外の場合は
<literal>false</literal> を返します。この属性はサイド別プレフィックス（例:
<literal>LeftHasBOM</literal>、<literal>RightHasBOM</literal>）に対応しています。例:
<literal>HasBOM</literal> と指定すると BOM のあるファイルを表示し、<literal>not
HasBOM</literal> と指定すると BOM のないファイルを表示します。</para>
              </listitem>
            </varlistentry>

          </variablelist>
        </section>

        <section id="FilterExpression_ArrayEvaluation">
          <title>配列の評価</title>

          <para>
接頭辞のない属性（例:
<literal>Size</literal>）は、左・中央・右のすべての側からの値を含む配列を返します。これらの配列に対して演算子を適用する場合、比較対象がスカラーか他の配列かによって動作が異なります。</para>

          <section id="FilterExpression_ArrayVsScalar">
            <title>配列とスカラーの比較</title>
            <para>
配列とスカラーを比較する場合、演算は各配列要素に対して個別に適用され、結果はブール値の配列になります。このブール配列に
<literal>true</literal> が1つでも含まれていれば、全体の評価結果は <literal>true</literal>
になります。すべてが <literal>false</literal> であれば <literal>false</literal> になります。</para>
            <example>
              <title>例</title>
<programlisting>[3, 5, 8] &gt; 6 -> [false, false, true] -> true</programlisting></example>
          </section>

          <section id="FilterExpression_ArrayVsArray">
            <title>配列と配列の比較</title>
            <para>
2つの配列を比較する場合、挙動は演算子によって異なります:</para>
            <itemizedlist>
              <listitem>
                <para>
<literal>=</literal> および <literal>!=</literal>
の場合：配列の長さが同じである必要があります。結果は配列ではなく単一のブール値になります。<literal>=</literal>
はすべての要素が一致する場合のみ <literal>true</literal> を返し、<literal>!=</literal>
はいずれかの要素が異なる場合に <literal>true</literal> を返します。</para>
              </listitem>
              <listitem>
                <para>
他のすべての演算子（例: <literal>&gt;</literal>,
<literal>&lt;</literal>）では、各要素ごとに演算が適用され、ブール値の配列が生成されます。この配列に
<literal>true</literal> が1つでも含まれていれば、式全体の評価結果は <literal>true</literal>
になります。すべてが <literal>false</literal> の場合は <literal>false</literal> になります。</para>
              </listitem>
            </itemizedlist>

            <example>
              <title>例</title>
<programlisting>[2, 4] = [2, 4] -> true</programlisting> <programlisting>[2, 4] != [2, 5] -> true （4 != 5 だから）</programlisting> <programlisting>[3, 5, 8] &gt; [6, 4, 2]
 -> [false, true, true]
 -> true （少なくとも1つの比較が true だから）</programlisting></example>
          </section>

          <section id="FilterExpression_ArraySummary">
            <title>要約</title>
            <itemizedlist>
              <listitem>
                <para>
配列とスカラーの比較では、ブール値の配列が生成されます。その配列に <literal>true</literal>
が1つでも含まれていれば、式の評価結果は <literal>true</literal> になります。</para>
              </listitem>
              <listitem>
                <para>
<literal>=</literal> または <literal>!=</literal> を使った配列同士の比較では、単一のブール値が返されます。</para>
              </listitem>
              <listitem>
                <para>
その他の演算子による配列同士の比較では、ブール配列が生成され、その中に <literal>true</literal>
が1つでも含まれていれば最終的な評価結果は <literal>true</literal> になります。</para>
              </listitem>
            </itemizedlist>
          </section>
        </section>
      </section>

      <section id="FilterExpression_Operators">
        <title>演算子</title>

        <para>
デフォルトでは、すべての文字列比較演算子（<literal>=</literal>、<literal>!=</literal>、<literal>&lt;</literal>、<literal>&lt;=</literal>、<literal>&gt;</literal>、<literal>&gt;=</literal>、<literal>like</literal>、<literal>matches</literal>、<literal>contains</literal>、<literal>recontains</literal>）は大文字小文字を区別しません。この動作はディレクティブで制御できます（<xref
linkend="FilterExpression_CaseSensitivity" /> を参照）。</para>

        <variablelist>
          <varlistentry>
            <term><literal>&lt;</literal>, <literal>&lt;=</literal>, <literal>&gt;</literal>,
<literal>&gt;=</literal></term>
            <listitem><para>数値、タイムスタンプ、または文字列の比較</para></listitem>
          </varlistentry>
          <varlistentry>
            <term><literal>=</literal></term>
            <listitem><para>等価比較</para></listitem>
          </varlistentry>
          <varlistentry>
            <term><literal>!=</literal></term>
            <listitem><para>不等比較</para></listitem>
          </varlistentry>
          <varlistentry>
            <term><literal>+</literal>, <literal>-</literal>, <literal>*</literal>,
<literal>/</literal>, <literal>%</literal></term>
            <listitem>
              <para>
算術演算子。<literal>+</literal> と <literal>-</literal>
は加算および減算、<literal>*</literal> と <literal>/</literal>
は乗算および除算、<literal>%</literal> は剰余演算（余り）を行います。</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term><literal>and</literal>, <literal>or</literal>, <literal>not</literal></term>
            <listitem><para>論理演算子</para></listitem>
          </varlistentry>
          <varlistentry>
            <term><literal>like</literal></term>
            <listitem>
              <para>ワイルドカードによる文字列一致</para>
              <para><literal>not like</literal> を使用して逆の一致条件を指定することもできます。</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term><literal>matches</literal></term>
            <listitem>
              <para>正規表現による一致</para>
              <para><literal>not matches</literal> を使用して一致しない条件を指定することもできます。</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term><literal>contains</literal></term>
            <listitem>
              <para>文字列が部分文字列を含んでいるかを判定します</para>
              <para><literal>not contains</literal> を使用して部分文字列が含まれていないことを確認できます。</para>
            </listitem>
          </varlistentry>
          <varlistentry>
            <term><literal>recontains</literal></term>
            <listitem>
              <para>いずれかの部分文字列が正規表現に一致するかを判定します</para>
              <para><literal>not recontains</literal> を使用して一致しないことを確認できます。</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>

      <section id="FilterExpression_Functions">
        <title>関数</title>

        <para>
フィルタ式は、データの操作や分析のためのさまざまな関数をサポートしています。関数は参照しやすいようにカテゴリ別に整理されています。</para>

        <section id="FilterExpression_StringFunctions">
          <title>文字列関数</title>
          <variablelist>
            <varlistentry>
              <term><function>strlen</function>(<replaceable>source</replaceable>)</term>
              <listitem><para>文字列の長さを <literal>Integer</literal> として返します。<replaceable>source</replaceable>
が文字列の配列である場合、結果は整数の配列になります。例: <literal>strlen(Name)</literal></para></listitem>
            </varlistentry>
            <varlistentry>
              <term><function>strCount</function>(<replaceable>str</replaceable>,
<replaceable>substr</replaceable>)</term>
              <listitem>
                <para>
<replaceable>str</replaceable> 内に部分文字列 <replaceable>substr</replaceable>
が出現する回数を数えます。デフォルトでは大文字・小文字を区別しません
(<literal>@cs</literal>/<literal>@ci</literal>
ディレクティブに従います)。<replaceable>str</replaceable>
が配列の場合、結果は各要素の件数を格納した整数配列になります。重複マッチは個別にカウントされます (例:
<literal>strCount("aaaa", "aa")</literal> は 2 を返します)。</para>
                <para>例:</para>
                <itemizedlist>
                  <listitem><para><literal>strCount("hello hello world", "hello")</literal> は 2 を返します</para></listitem>
                  <listitem><para><literal>strCount("Test TEST test", "test")</literal> は 3
を返します（大文字・小文字を区別しない）</para></listitem>
                  <listitem><para><literal>@cs strCount("Test TEST test", "test")</literal> は 1
を返します（大文字・小文字を区別する）</para></listitem>
                  <listitem><para><literal>le:strCount(Line, "ERROR") > 2</literal> は "ERROR" が 2
回以上含まれる行を表示します</para></listitem>
                </itemizedlist>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term><function>regexCount</function>(<replaceable>str</replaceable>,
<replaceable>pattern</replaceable>)</term>
              <listitem>
                <para>
<replaceable>str</replaceable> 内で正規表現 <replaceable>pattern</replaceable>
がマッチする回数を数えます。デフォルトでは大文字・小文字を区別しません
(<literal>@cs</literal>/<literal>@ci</literal>
ディレクティブに従います)。<replaceable>str</replaceable>
が配列の場合、結果は各要素の件数を格納した整数配列になります。無限ループを避けるため、ゼロ長のマッチも適切に処理されます。</para>
                <para>例:</para>
                <itemizedlist>
                  <listitem><para><literal>regexCount("test123abc456", "\d+")</literal> は 2 を返します</para></listitem>
                  <listitem><para><literal>regexCount("AAA BBB CCC", "[A-Z]+")</literal>は 3 を返します</para></listitem>
                  <listitem><para><literal>@cs regexCount("Test TEST", "TEST")</literal> は 1 を返します</para></listitem>
                  <listitem><para><literal>le:regexCount(Line, "\b(error|warning)\b") > 0</literal> はerror または
warning キーワードを含む行を表示します</para></listitem>
                </itemizedlist>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term><function>strFind</function>(<replaceable>str</replaceable>,
<replaceable>substr</replaceable>[, <replaceable>occurrence</replaceable>])</term>
              <listitem>
                <para>
<replaceable>str</replaceable> 内の部分文字列 <replaceable>substr</replaceable> の N
番目の出現位置 (0 基底) を返します。省略可能な <replaceable>occurrence</replaceable>
パラメータは何番目の出現を検索するかを指定します (0 基底、デフォルトは 0 で最初の出現)。デフォルトでは大文字・小文字を区別しません
(<literal>@cs</literal>/<literal>@ci</literal>
ディレクティブに従います)。部分文字列が見つからない場合や出現インデックスが範囲外の場合は <literal>none</literal>
を返します。<replaceable>str</replaceable> が配列の場合、結果は位置 (または none 値) の配列になります。</para>
                <para>例:</para>
                <itemizedlist>
                  <listitem><para><literal>strFind("hello world", "o")</literal> は 4 を返します (最初の 'o')</para></listitem>
                  <listitem><para><literal>strFind("hello world", "o", 1)</literal> は 7 を返します (2 番目の 'o')</para></listitem>
                  <listitem><para><literal>@cs strFind("Test TEST test", "test")</literal> は 10
を返します（大文字・小文字を区別する）</para></listitem>
                  <listitem><para><literal>strFind(array("abc", "def"), "b")</literal> は <literal>array(1,
none)</literal> を返します</para></listitem>
                </itemizedlist>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term><function>regexFind</function>(<replaceable>str</replaceable>,
<replaceable>pattern</replaceable>[, <replaceable>group</replaceable>[,
<replaceable>occurrence</replaceable>]])</term>
              <listitem>
                <para>
<replaceable>str</replaceable> 内で正規表現が N 番目にマッチする位置 (0 基底)を返します。省略可能な
<replaceable>group</replaceable> パラメータは検索するキャプチャグループを指定します (0 基底、デフォルトは 0
でマッチ全体)。省略可能な <replaceable>occurrence</replaceable>
パラメータはパターンの何番目の出現を検索するかを指定します (0 基底、デフォルトは 0 で最初の出現)。デフォルトでは大文字・小文字を区別しません
(<literal>@cs</literal>/<literal>@ci</literal>
ディレクティブに従います)。パターンがマッチしない場合、グループインデックスが範囲外の場合、または出現インデックスが範囲外の場合は
<literal>none</literal> を返します。<replaceable>str</replaceable> が配列の場合、結果は位置
(または none 値) の配列になります。</para>
                <para>例:</para>
                <itemizedlist>
                  <listitem><para><literal>regexFind("test123abc456", "\d+")</literal> は 4 を返します("123" の位置)</para></listitem>
                  <listitem><para><literal>regexFind("test123abc456", "\d+", 0, 1)</literal> は 10 を返します ("456"
の位置、2 番目のマッチ)</para></listitem>
                  <listitem><para><literal>regexFind("abc-def-ghi", "([a-z]+)-([a-z]+)", 1)</literal> は 0
を返します (最初のキャプチャグループ "abc" の位置)</para></listitem>
                  <listitem><para><literal>regexFind("v1.0 and v2.5", "v(\d+)\.(\d+)", 1, 1)</literal> は 10
を返します (2 番目の出現のメジャーバージョン "2")</para></listitem>
                  <listitem><para><literal>regexFind(array("test123", "abc"), "\d+")</literal> は
<literal>array(4, none)</literal> を返します</para></listitem>
                </itemizedlist>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term><function>substr</function>(<replaceable>source</replaceable>,
<replaceable>start</replaceable>, <replaceable>count</replaceable>)</term>
              <listitem><para><emphasis>文字列または文字列の配列</emphasis> から指定範囲の文字列を <literal>String</literal>
型で返します。<replaceable>source</replaceable> が文字列配列の場合、結果は文字列配列になります。例:
<literal>substr(Name, 0, 3)</literal></para></listitem>
            </varlistentry>
            <varlistentry>
              <term><function>replace</function>(str, from, to)</term>
              <listitem>
                <para>
文字列内に含まれる部分文字列 'from' をすべて 'to'
に置換します。<replaceable>str</replaceable>が文字列配列の場合、結果は文字列配列になります。例:
replace(name, "_old", "_new")</para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term><function>regexReplace</function>(str, pattern, replacement)</term>
              <listitem>
                <para>
正規表現 pattern に一致するすべての部分を replacement 文字列で置換します。replacement 文字列では後方参照（$1、$2
など）を使用できます。<replaceable>str</replaceable>が文字列配列の場合、結果は文字列配列になります。例:
regexReplace(name, "^(\w+)(\w+)$", "$2$1") は、アンダースコアで区切られた単語の順序を入れ替えます。</para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term><function>replaceWithList</function>(str, filepath)</term>
              <listitem>
                <para>
タブ区切りファイルから読み込んだ置換ルールを使用して、<replaceable>str</replaceable>
内の複数の文字列を置換します。ファイル形式は 1 行につき 1
つの置換ルールで、<literal>search_string&lt;TAB&gt;replacement_string</literal>
の形式です。<literal>#</literal>
で始まる行はコメントとして扱われ、無視されます。空行も無視されます。<replaceable>str</replaceable>
が配列の場合、置換が適用された文字列の配列が結果として返されます。</para>
                <para>ファイル形式の例:</para>
                <screen># コメント行
apple	orange
cat	dog
old	new</screen>
                <para>例:</para>
                <itemizedlist>
                  <listitem><para><literal>replaceWithList(Name, "C:\Filters\replacements.txt")</literal> -
ファイル内の置換ルールをファイル名に適用します</para></listitem>
                </itemizedlist>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term><function>regexReplaceWithList</function>(str, filepath)</term>
              <listitem>
                <para>
タブ区切りファイルから読み込んだ正規表現パターンを使用して、<replaceable>str</replaceable>
内の文字列を置換します。ファイル形式は 1 行につき 1
つのパターンで、<literal>regex_pattern&lt;TAB&gt;replacement_string</literal>
の形式です。置換文字列には、キャプチャされたグループへの後方参照 ($1, $2 など)
を含めることができます。<literal>#</literal>
で始まる行はコメントとして扱われ、無視されます。空行も無視されます。<replaceable>str</replaceable>
が配列の場合、置換が適用された文字列の配列が結果として返されます。</para>
                <para>ファイル形式の例:</para>
                <screen># コメント行
\d+	NUMBER
(\d{4})-(\d{2})-(\d{2})	$1_$2_$3</screen>
                <para>例:</para>
                <itemizedlist>
                  <listitem><para><literal>regexReplaceWithList(Name,
"C:\Filters\regex_replacements.txt")</literal> - 正規表現による置換をファイル名に適用します</para></listitem>
                </itemizedlist>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term><function>regexExtract</function>(<replaceable>str</replaceable>,
<replaceable>pattern</replaceable>[, <replaceable>group</replaceable>[,
<replaceable>offset</replaceable>]])</term>
              <listitem>
                <para>
文字列から正規表現パターンにマッチするテキストを取り出します。省略可能な <replaceable>group</replaceable>
パラメータは抽出するキャプチャグループを指定します (0 基底)。グループ 0 (デフォルト) はマッチ全体を返し、グループ 1、2
などはパターン内の括弧で定義された対応するキャプチャグループを返します。省略可能な <replaceable>offset</replaceable>
パラメータはパターンの何番目の出現を取り出すかを指定します (0 基底)。オフセット 0 (デフォルト) は最初のマッチを返し、オフセット 1 は 2
番目のマッチを返します。これは文字列内の 2 番目の数値など、行内の N
番目の出現を取り出す際に便利です。パターンがマッチしない場合、グループインデックスが範囲外の場合、またはオフセットがマッチ数を超える場合は
<literal>none</literal> を返します。<replaceable>str</replaceable>
が配列の場合、結果は各要素のキャプチャを格納した配列になります。デフォルトでは大文字・小文字を区別しません
(<literal>@cs</literal>/<literal>@ci</literal> ディレクティブに従います)。</para>
                <para>例:</para>
                <itemizedlist>
                  <listitem><para><literal>regexExtract("abc123", "[a-z]+\d+")</literal> は
<literal>"abc123"</literal> を返します（マッチ全体）</para></listitem>
                  <listitem><para><literal>regexExtract("abc123", "([a-z]+)(\d+)", 1)</literal> は
<literal>"abc"</literal> を返します（最初のキャプチャグループ）</para></listitem>
                  <listitem><para><literal>regexExtract("abc123", "([a-z]+)(\d+)", 2)</literal> は
<literal>"123"</literal> を返します（2 番目のキャプチャグループ）</para></listitem>
                  <listitem><para><literal>regexExtract("2025-05-16", "(\d{4})-(\d{2})-(\d{2})", 1)</literal>
は <literal>"2025"</literal> を返します</para></listitem>
                  <listitem><para><literal>regexExtract("user@example.com", "([^@]+)@([^@]+)", 1)</literal> は
<literal>"user"</literal> を返します</para></listitem>
                  <listitem><para><literal>regexExtract("user@example.com", "([^@]+)@([^@]+)", 2)</literal> は
<literal>"example.com"</literal> を返します</para></listitem>
                  <listitem><para><literal>regexExtract("value 123 and value 456", "(\d+)", 0, 0)</literal> は
<literal>"123"</literal> を返します（最初の数値）</para></listitem>
                  <listitem><para><literal>regexExtract("value 123 and value 456", "(\d+)", 0, 1)</literal> は
<literal>"456"</literal> を返します（2 番目の数値）</para></listitem>
                  <listitem><para><literal>regexExtract("v1.0.0 and v2.0.0", "v(\d+)\.(\d+)\.(\d+)", 1,
1)</literal> は <literal>"2"</literal> を返します（2 番目の出現のメジャーバージョン）</para></listitem>
                  <listitem><para><literal>regexExtract("test", "\d+")</literal> は <literal>none</literal>
を返します（マッチなし）</para></listitem>
                  <listitem><para><literal>regexExtract("abc", "([a-z])", 5)</literal> は
<literal>none</literal> を返します（グループが範囲外）</para></listitem>
                  <listitem><para><literal>regexExtract(array("abc123", "def456"), "([a-z]+)(\d+)",
1)</literal> は <literal>array("abc", "def")</literal> を返します</para></listitem>
                  <listitem><para><literal>@cs regexExtract("ABC123", "([a-z]+)", 1)</literal> は
<literal>none</literal> を返します（大文字・小文字を区別する、マッチなし）</para></listitem>
                  <listitem><para><literal>le:regexExtract(Line, "error:\s+(\w+)", 1)</literal>
はログ行からエラー種別を抽出します</para></listitem>
                  <listitem><para><literal>fe:regexExtract(Name, "v(\d+)\.(\d+)\.(\d+)", 1) = "2"</literal>
はメジャーバージョンが 2 のファイルをフィルタリングします</para></listitem>
                </itemizedlist>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term><function>normalizeUnicode</function>(str[, form])</term>
              <listitem>
                <para>
Unicode 文字列を正規化します。省略可能な form パラメータで正規化形式を指定できます。指定可能な形式は "NFC" または
"C"（既定値）、"NFD" または "D"、"NFKC" または "KC"、"NFKD" または "KD" です。数値形式も指定できます:
1=NFC、2=NFD、5=NFKC、6=NFKD。<replaceable>str</replaceable>が文字列配列の場合、結果は文字列配列になります。例:
normalizeUnicode(name, "NFC")</para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term>
<function>toLower</function>(<replaceable>str</replaceable>)</term>
              <listitem>
                <para>
文字列内のすべての文字を小文字に変換します。<replaceable>str</replaceable>
が配列の場合、結果は小文字に変換された文字列の配列になります。例: <literal>toLower("Hello World")</literal>
は <literal>"hello world"</literal> を返します。</para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term>
<function>toUpper</function>(<replaceable>str</replaceable>)</term>
              <listitem>
                <para>
文字列内のすべての文字を大文字に変換します。<replaceable>str</replaceable>
が配列の場合、結果は大文字に変換された文字列の配列になります。例: <literal>toUpper("Hello World")</literal>
は <literal>"HELLO WORLD"</literal> を返します。</para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term>
<function>toHalfWidth</function>(<replaceable>str</replaceable>)</term>
              <listitem>
                <para>
全角文字を半角文字に変換します。主に全角の英数字やカタカナを半角に変換するために使用されます。<replaceable>str</replaceable>
が配列の場合、結果は変換された文字列の配列になります。</para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term>
<function>toFullWidth</function>(<replaceable>str</replaceable>)</term>
              <listitem>
                <para>
半角文字を全角文字に変換します。主に半角の英数字やカタカナを全角に変換するために使用されます。<replaceable>str</replaceable>
が配列の場合、結果は変換された文字列の配列になります。</para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term>
<function>toKatakana</function>(<replaceable>str</replaceable>)</term>
              <listitem>
                <para>
ひらがなをカタカナに変換します。ひらがな以外の文字は変更されません。<replaceable>str</replaceable>
が配列の場合、結果は変換された文字列の配列になります。</para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term>
<function>toHiragana</function>(<replaceable>str</replaceable>)</term>
              <listitem>
                <para>
カタカナをひらがなに変換します。カタカナ以外の文字は変更されません。<replaceable>str</replaceable>
が配列の場合、結果は変換された文字列の配列になります。</para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term>
<function>toSimplifiedChinese</function>(<replaceable>str</replaceable>)</term>
              <listitem>
                <para>
繁体字中国語を簡体字中国語に変換します。簡体字が存在しない文字は変更されません。<replaceable>str</replaceable>
が配列の場合、結果は変換された文字列の配列になります。</para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term>
<function>toTraditionalChinese</function>(<replaceable>str</replaceable>)</term>
              <listitem>
                <para>
簡体字中国語を繁体字中国語に変換します。繁体字が存在しない文字は変更されません。<replaceable>str</replaceable>
が配列の場合、結果は変換された文字列の配列になります。</para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term>
<function>trim</function>(<replaceable>str</replaceable>)</term>
              <listitem>
                <para>
文字列の先頭および末尾の空白文字（スペース、タブ、改行、復帰）を除去します。<replaceable>str</replaceable>
が配列の場合、結果はトリムされた文字列の配列になります。</para>
                <para>例:</para>
                <itemizedlist>
                  <listitem><para><literal>trim(" hello ")</literal> は <literal>"hello"</literal> を返します</para></listitem>
                  <listitem><para><literal>trim(array(" test ", " data "))</literal> は <literal>array("test",
"data")</literal> を返します</para></listitem>
                </itemizedlist>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term>
<function>trimLeft</function>(<replaceable>str</replaceable>)</term>
              <listitem>
                <para>
文字列の先頭の空白文字（スペース、タブ、改行、復帰）を除去します。末尾の空白はそのまま保持されます。<replaceable>str</replaceable>
が配列の場合、結果は左トリムされた文字列の配列になります。</para>
                <para>例:</para>
                <itemizedlist>
                  <listitem><para><literal>trimLeft(" hello ")</literal> は <literal>"hello "</literal> を返します</para></listitem>
                </itemizedlist>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term>
<function>trimRight</function>(<replaceable>str</replaceable>)</term>
              <listitem>
                <para>
文字列の末尾の空白文字（スペース、タブ、改行、復帰）を除去します。先頭の空白はそのまま保持されます。<replaceable>str</replaceable>
が配列の場合、結果は右トリムされた文字列の配列になります。</para>
                <para>例:</para>
                <itemizedlist>
                  <listitem><para><literal>trimRight(" hello ")</literal> は <literal>" hello"</literal> を返します</para></listitem>
                </itemizedlist>
              </listitem>
            </varlistentry>
          </variablelist>
        </section>

        <section id="FilterExpression_FileContentFunctions">
          <title>ファイル内容関数</title>
          <variablelist>
            <varlistentry>
              <term><function>lineCount</function>(<replaceable>content</replaceable>)</term>
              <listitem><para>ファイル内容またはファイル内容の配列の行数を <literal>Integer</literal>
として返します。<replaceable>content</replaceable> が配列の場合、結果は整数の配列になります。例:
<literal>lineCount(Content)</literal></para></listitem>
            </varlistentry>
            <varlistentry>
              <term><function>sublines</function>(<replaceable>content</replaceable>,
<replaceable>start</replaceable>, <replaceable>count</replaceable>)</term>
              <listitem>
                <para>
ファイル内容またはファイル内容の配列から、指定した開始行から指定行数の行を抽出し、連結した文字列として返します。<replaceable>content</replaceable>
が配列の場合、結果は文字列の配列になります。</para>
              </listitem>
            </varlistentry>
          </variablelist>
        </section>

        <section id="FilterExpression_TypeConversionFunctions">
          <title>型変換関数</title>
          <variablelist>
            <varlistentry>
              <term><function>toNumber</function>(<replaceable>str</replaceable>),
<function>toInt</function>(<replaceable>str</replaceable>),
<function>toDouble</function>(<replaceable>str</replaceable>)</term>
              <listitem><para>文字列を数値に変換します。<function>toNumber</function>
は入力形式に応じて整数または浮動小数点数を返します。<function>toInt</function>
は整数のみを返します。<function>toDouble</function>
は浮動小数点数のみを返します。入力内のカンマは無視されます。パース失敗時は none を返します。例:
<literal>le:toInt(Column("Count")) &gt; 100</literal></para></listitem>
            </varlistentry>
            <varlistentry>
              <term><function>toDateTime</function>(<replaceable>str</replaceable>)</term>
              <listitem>
                <para>
文字列をタイムスタンプ値に変換します。複数の日付・時刻形式をサポートします。文字列をパースできない場合は none を返します。例:
<literal>toDateTime("2025-01-15") &gt; today()</literal></para>
              </listitem>
            </varlistentry>
          </variablelist>
        </section>

        <section id="FilterExpression_DateTimeFunctions">
          <title>日時関数</title>
          <variablelist>
            <varlistentry>
              <term><function>now</function>()</term>
              <listitem><para>現在の日時を <literal>Timestamp</literal> 型の値として返します。</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><function>today</function>()</term>
              <listitem><para>本日の日付を、日の始まりである <literal>00:00:00.000</literal> を表す
<literal>Timestamp</literal> 型として返します。</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><function>startOfWeek</function>(<replaceable>timestamp</replaceable>)</term>
              <listitem><para>週の初日（日曜日）を返します。ロケールには依存しません。</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><function>startOfMonth</function>(<replaceable>timestamp</replaceable>)</term>
              <listitem><para>月の初日を返します。</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><function>startOfYear</function>(<replaceable>timestamp</replaceable>)</term>
              <listitem><para>年の初日を返します。</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><function>toDateStr</function>(<replaceable>timestamp</replaceable>)</term>
              <listitem><para>指定されたタイムスタンプを<literal>yyyy-MM-dd</literal>
形式の文字列に変換して返します。<replaceable>timestamp</replaceable>がタイムスタンプ配列の場合、結果は文字列配列になります。</para></listitem>
            </varlistentry>
          </variablelist>
        </section>

        <section id="FilterExpression_MathFunctions">
          <title>数学・比較関数</title>
          <variablelist>
            <varlistentry>
              <term><function>abs</function>(<replaceable>value</replaceable>)</term>
              <listitem><para><emphasis>整数または整数の配列</emphasis> の絶対値を返します。<replaceable>value</replaceable>
が整数配列である場合、結果は整数配列になります。</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><function>isWithin</function>(<replaceable>value</replaceable>,
<replaceable>min</replaceable>, <replaceable>max</replaceable>)</term>
              <listitem>
                <para>
<replaceable>value</replaceable> が範囲 <literal>[min,
max]</literal>（両端を含む）内にある場合に <literal>true</literal>
を返します。整数、浮動小数点数、タイムスタンプ、文字列（大文字小文字を区別しない比較）に対応しています。<replaceable>value</replaceable>
が配列の場合は、各要素を個別に評価した真偽値の配列を返します。</para>
                <para>例:</para>
                <itemizedlist>
                  <listitem><para><literal>isWithin(5, 1, 10)</literal> は <literal>true</literal> を返します</para></listitem>
                  <listitem><para><literal>isWithin(Size, 1KB, 10MB)</literal> - いずれかのファイルサイズが 1KB から 10MB
の範囲内かを確認します</para></listitem>
                  <listitem><para><literal>isWithin(Date, today() - 7days, today())</literal> - ファイルが過去 1
週間以内に更新されたかを確認します</para></listitem>
                  <listitem><para><literal>allof(isWithin(Size, 1KB, 10MB))</literal> - すべてのファイルサイズが 1KB から
10MB の範囲内かを確認します</para></listitem>
                </itemizedlist>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term><function>inRange</function>(<replaceable>value</replaceable>,
<replaceable>min</replaceable>, <replaceable>max</replaceable>)</term>
              <listitem>
                <para>
<replaceable>value</replaceable> が範囲 <literal>[min,
max)</literal>（下限を含み、上限を含まない）内にある場合に <literal>true</literal>
を返します。整数、浮動小数点数、タイムスタンプ、文字列（大文字小文字を区別しない比較）に対応しています。<replaceable>value</replaceable>
が配列の場合は、各要素を個別に評価した真偽値の配列を返します。</para>
                <para>例:</para>
                <itemizedlist>
                  <listitem><para><literal>inRange(5, 1, 10)</literal> は <literal>true</literal> を返します</para></listitem>
                  <listitem><para><literal>inRange(10, 1, 10)</literal> は <literal>false</literal> を返します</para></listitem>
                  <listitem><para><literal>inRange(Size, 0, 1MB)</literal> - いずれかのファイルサイズが 1MB 未満かを確認します</para></listitem>
                  <listitem><para><literal>anyof(inRange(Date, startOfMonth(today()), today()))</literal> -
いずれかのファイルが今月（今日を除く）に更新されたかを確認します</para></listitem>
                </itemizedlist>
              </listitem>
            </varlistentry>
          </variablelist>
        </section>

        <section id="FilterExpression_ArrayFunctions">
          <title>配列関数</title>
          <variablelist>
            <varlistentry>
              <term><function>array</function>(<replaceable>value1</replaceable>,
<replaceable>value2</replaceable>, ...)</term>
              <listitem><para>指定された値から配列を作成します。例：<literal>array(1, 2, 3)</literal></para></listitem>
            </varlistentry>
            <varlistentry>
              <term><function>at</function>(<replaceable>array</replaceable>,
<replaceable>index</replaceable>)</term>
              <listitem><para>指定されたインデックス（0から数える）の位置にある要素を返します。負のインデックスは末尾から数えます。例：<literal>at(array(1, 2,
3), -1) は</literal>3 を返します</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><function>anyof</function>(<replaceable>booleans</replaceable>)</term>
              <listitem><para><emphasis>ブール値の配列</emphasis> のいずれかの要素が条件を満たす場合に <literal>true</literal>
を返します。</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><function>allof</function>(<replaceable>booleans</replaceable>)</term>
              <listitem><para><emphasis>ブール値の配列</emphasis> のすべての要素が条件を満たす場合に <literal>true</literal>
を返します。</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><function>allequal</function>(<replaceable>array</replaceable>)</term>
              <listitem><para>配列内のすべての値が等しい場合に <literal>true</literal> を返します。</para></listitem>
            </varlistentry>
            <varlistentry>
              <term><function>len</function>(<replaceable>value</replaceable>)</term>
              <listitem>
                <para>値の長さを <literal>Integer</literal> として返します。</para>
                <para>動作:</para>
                <itemizedlist>
                  <listitem><para><emphasis>配列</emphasis>：配列に含まれる要素の数を返します</para></listitem>
                  <listitem><para><emphasis>文字列</emphasis>: UTF-8 の文字数を返します</para></listitem>
                  <listitem><para><emphasis>None (monostate)</emphasis>: 0 を返します</para></listitem>
                  <listitem><para><emphasis>その他のスカラー値</emphasis>（Integer、Real、Boolean、Timestamp など）: 1 を返します</para></listitem>
                </itemizedlist>
                <para>例:</para>
                <itemizedlist>
                  <listitem><para><literal>len(array(1, 2, 3))</literal>- 3 を返します</para></listitem>
                  <listitem><para><literal>len("hello")</literal>- 5を返します</para></listitem>
                  <listitem><para><literal>len(123)</literal>- 1を返します</para></listitem>
                  <listitem><para><literal>len(Size)</literal>- フォルダ比較における要素の数（2または3）を返します</para></listitem>
                </itemizedlist>
              </listitem>
            </varlistentry>
          </variablelist>
        </section>

        <section id="FilterExpression_ConditionalFunctions">
          <title>条件関数</title>
          <variablelist>
            <varlistentry>
              <term><function>if</function>(<replaceable>condition</replaceable>,
<replaceable>trueValue</replaceable>, <replaceable>falseValue</replaceable>)</term>
              <listitem>
                <para>
<replaceable>condition</replaceable> が true と評価された場合は
<replaceable>trueValue</replaceable> を返し、それ以外の場合は
<replaceable>falseValue</replaceable>
を返します。この関数は短絡評価を行います（返される側の分岐のみが評価されます）。</para>
                <para>例:</para>
                <itemizedlist>
                  <listitem><para><literal>if(Size > 1MB, "large", "small")</literal> - ファイルサイズに応じて "large"
または "small" を返します</para></listitem>
                  <listitem><para><literal>if(Extension = "txt", "text file", "other file")</literal> -
拡張子によってファイルを分類します</para></listitem>
                  <listitem><para><literal>if(Exists, Size, 0)</literal> - ファイルが存在する場合はサイズを、存在しない場合は 0 を返します</para></listitem>
                </itemizedlist>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term><function>ifEach</function>(<replaceable>conditionArray</replaceable>,
<replaceable>trueValue</replaceable>, <replaceable>falseValue</replaceable>)</term>
              <listitem>
                <para>
要素ごとの条件付き選択を行います。<replaceable>conditionArray</replaceable> の各要素について、条件が true
の場合は <replaceable>trueValue</replaceable> の対応する要素を、false の場合は
<replaceable>falseValue</replaceable>
の対応する要素を返します。<replaceable>trueValue</replaceable> または
<replaceable>falseValue</replaceable> がスカラー値の場合は、すべての要素にブロードキャストされます。</para>
                <para>例:</para>
                <itemizedlist>
                  <listitem><para><literal>ifEach(Size &gt; 1MB, "large", "small")</literal> - 各ファイルについて
"large" / "small" の配列を返します</para></listitem>
                  <listitem><para><literal>ifEach(array(true, false, true), array("a", "b", "c"), array("x",
"y", "z"))</literal> - <literal>array("a", "y", "c")</literal> を返します</para></listitem>
                  <listitem><para><literal>anyof(ifEach(Size &gt; 100KB, Size &lt; 10MB, false))</literal> -
100KB 以上 10MB 未満のファイルが存在するかを確認します</para></listitem>
                </itemizedlist>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term><function>choose</function>(<replaceable>index</replaceable>,
<replaceable>value0</replaceable>, <replaceable>value1</replaceable>, ...)</term>
              <listitem>
                <para>
<replaceable>index</replaceable>
に基づいて引数の中から値を選択します。<replaceable>index</replaceable> が 0 の場合は
<replaceable>value0</replaceable> を、1 の場合は <replaceable>value1</replaceable>
を返します。負のインデックスは 0 として扱われます。最後の値を超えるインデックスが指定された場合は、最後の値を返します。</para>
                <para>例:</para>
                <itemizedlist>
                  <listitem><para><literal>choose(0, "first", "second", "third")</literal> - "first" を返します</para></listitem>
                  <listitem><para><literal>choose(DiffCode % 3, "equal", "different", "unique")</literal> -
差異コードをラベルに対応付けます</para></listitem>
                  <listitem><para><literal>choose(5, "a", "b", "c")</literal> - "c" を返します（範囲外のため最後の値が返されます）</para></listitem>
                </itemizedlist>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term><function>chooseEach</function>(<replaceable>indexArray</replaceable>,
<replaceable>value0</replaceable>, <replaceable>value1</replaceable>, ...)</term>
              <listitem>
                <para>
要素ごとの値選択を行います。<replaceable>indexArray</replaceable>
の各インデックスに対して、残りの引数から対応する値を選択します。<replaceable>indexArray</replaceable>
がスカラー値の場合は <literal>choose</literal> と同じ動作になります。</para>
                <para>例:</para>
                <itemizedlist>
                  <listitem><para><literal>chooseEach(array(0, 1, 2), "a", "b", "c")</literal> -
<literal>array("a", "b", "c")</literal> を返します</para></listitem>
                  <listitem><para><literal>chooseEach(array(0, 0, 1), "x", "y")</literal> -
<literal>array("x", "x", "y")</literal> を返します</para></listitem>
                  <listitem><para><literal>chooseEach(array(2, 0, 1), "first", "second", "third")</literal> -
<literal>array("third", "first", "second")</literal> を返します</para></listitem>
                </itemizedlist>
              </listitem>
            </varlistentry>
          </variablelist>
        </section>

        <section id="FilterExpression_LogicalFunctions">
          <title>要素ごとの論理関数</title>
          <variablelist>
            <varlistentry>
              <term><function>andEach</function>(<replaceable>value1</replaceable>,
<replaceable>value2</replaceable>),
<function>orEach</function>(<replaceable>value1</replaceable>,
<replaceable>value2</replaceable>),
<function>notEach</function>(<replaceable>value</replaceable>)</term>
              <listitem>
                <para>
要素ごとの論理演算を行います。これらの関数は、真偽値、真偽値配列、またはその組み合わせに対して動作します。</para>
                <itemizedlist>
                  <listitem><para><literal>andEach</literal> - 論理 AND 演算</para></listitem>
                  <listitem><para><literal>orEach</literal> - 論理 OR 演算</para></listitem>
                  <listitem><para><literal>notEach</literal> - 論理 NOT 演算（単一引数）</para></listitem>
                </itemizedlist>
                <para>
引数がスカラー値の場合はスカラーの真偽値を返します。一方が配列でもう一方がスカラー値の場合は、スカラー値がすべての要素にブロードキャストされます。両方が配列の場合は、要素ごとの演算が行われます。</para>
                <para>例:</para>
                <itemizedlist>
                  <listitem><para><literal>andEach(Size &gt; 1KB, Size &lt; 1MB)</literal> - 1KB 以上 1MB
未満のファイル</para></listitem>
                  <listitem><para><literal>orEach(Extension = "txt", Extension = "log")</literal> - txt または
log ファイル</para></listitem>
                  <listitem><para><literal>notEach(Exists)</literal> - 存在しないファイル</para></listitem>
                  <listitem><para><literal>allof(andEach(Exists, Size &gt; 0))</literal> - すべてのファイルが存在し、サイズが 0
ではありません</para></listitem>
                  <listitem><para><literal>anyof(notEach(Size &gt; 1MB))</literal> - 1MB 以下のファイルが存在します</para></listitem>
                </itemizedlist>
              </listitem>
            </varlistentry>
          </variablelist>
        </section>

        <section id="FilterExpression_DiagnosticFunctions">
          <title>診断およびログ関数</title>
          <variablelist>
            <varlistentry>
              <term><function>logError</function>(<replaceable>value1</replaceable>,
<replaceable>value2</replaceable>, ...),
<function>logWarn</function>(<replaceable>value1</replaceable>,
<replaceable>value2</replaceable>, ...),
<function>logInfo</function>(<replaceable>value1</replaceable>,
<replaceable>value2</replaceable>, ...)</term>
              <listitem>
                <para>
すべての引数の文字列表現を連結してログに出力します（それぞれエラー、警告、情報レベルで出力）。引数は空白で区切られ、最後の引数の値が関数の戻り値として返されます。これらの関数はフィルタ式のデバッグに便利です。</para>
                <para>使用例（戻り値を利用する場合）:</para>
                <itemizedlist>
                  <listitem><para><literal>logInfo("ファイルサイズ:", Size) > 1MB</literal> -
ファイルサイズをログに出力し、1MBより大きいかを確認します</para></listitem>
                  <listitem><para><literal>logWarn("処理中:", Name) like "*.tmp"</literal> -
ファイル名をログに出力し、テンポラリファイルかどうかを確認します</para></listitem>
                  <listitem><para><literal>Size > 1KB and logInfo("大きなファイル:", Name) contains "test"</literal>
- サイズ条件が真の場合のみログ出力し、その後ファイル名をチェックします</para></listitem>
                </itemizedlist>
              </listitem>
            </varlistentry>
          </variablelist>
        </section>
      </section>

      <section id="FilterExpression_Units">
        <title>単位</title>
        <para>ファイルサイズには以下の接尾辞を使用できます：</para>
        <simplelist type="inline">
          <member>KB</member>
          <member>MB</member>
          <member>GB</member>
          <member>TB</member>
        </simplelist>
        <para>時間の長さには以下の接尾辞を使用できます：</para>
        <simplelist type="inline">
          <member>weeks</member><member>week</member><member>w</member>
          <member>days</member><member>day</member><member>d</member>
          <member>hours</member><member>hour</member><member>hr</member><member>h</member>
          <member>minutes</member><member>minute</member><member>min</member><member>m</member>
          <member>seconds</member><member>second</member><member>sec</member><member>s</member>
          <member>milliseconds</member><member>millisecond</member><member>msec</member><member>ms</member>
        </simplelist>
      </section>

      <section id="FilterExpression_Examples">
        <title>例</title>
        <itemizedlist>
          <listitem><para><literal>Size &lt; 10KB</literal> - いずれかのファイルサイズが 10KB 未満</para></listitem>
          <listitem><para><literal>LeftSize &gt;= 10MB</literal> - 左側のファイルサイズが 10MB 以上</para></listitem>
          <listitem><para><literal>allof(Size &lt; 1MB)</literal> - すべてのファイルが 1MB 未満</para></listitem>
          <listitem><para><literal>abs(LeftSize - RightSize) &lt; 1KB</literal> - サイズ差が小さい</para></listitem>
          <listitem><para><literal>DateStr = "2025-07-20"</literal> - その日に更新されたファイル</para></listitem>
          <listitem><para><literal>Date &gt;= today()</literal> - 今日以降に更新されたファイル</para></listitem>
          <listitem><para><literal>日付 &gt; d"2026-05-21 07:16:33"</literal>- 特定の日時以降に更新されたもの</para></listitem>
          <listitem><para><literal>isWithin(Date, d"2026-01-01", d"2026-12-31 23:59:59")</literal>-
2026年中に変更されたもの</para></listitem>
          <listitem><para><literal>isWithin(Date, today() - 7days, today())</literal> -
過去1週間以内に更新されたファイル</para></listitem>
          <listitem><para><literal>inRange(Size, 1KB, 10MB)</literal> - ファイルサイズが1KB以上10MB未満</para></listitem>
          <listitem><para><literal>allof(isWithin(Size, 100KB, 1MB))</literal> -
すべてのファイルサイズが100KBから1MBの範囲内</para></listitem>
          <listitem><para><literal>AttrStr contains "R"</literal> - 読み取り専用ファイル</para></listitem>
          <listitem><para><literal>Name matches "file[0-9]\.txt"</literal> - ファイル名に正規表現を適用</para></listitem>
          <listitem><para><literal>Content contains "Test"</literal> - 内容に "Test" を含む</para></listitem>
          <listitem><para><literal>sublines(Content, 0, 1) contains "XML"</literal> - 1行目に "XML" を含む</para></listitem>
          <listitem><para><literal>strCount(Content, "TODO") &gt; 5</literal> - ファイルに TODO コメントが 5
個以上含まれている</para></listitem>
          <listitem><para><literal>regexCount(Content, "\bFIXME\b") &gt; 0</literal> - ファイルに FIXME
マーカーが少なくとも 1 つ含まれている</para></listitem>
          <listitem><para><literal>strFind(Name, "_test") != none</literal> - ファイル名に "_test" を含むファイル</para></listitem>
          <listitem><para><literal>strFind(Name, ".", 1) &gt; 0</literal> - ファイル名に複数のドットがあるファイル（2
番目のドットが存在する）</para></listitem>
          <listitem><para><literal>regexFind(Name, "\d{4}") &lt; 5</literal> - 先頭 5 文字以内に
4桁の数字が出現するファイル</para></listitem>
          <listitem><para><literal>regexExtract(Name, "v(\d+)\.(\d+)\.(\d+)", 1) = "2"</literal> -
メジャーバージョンが 2 のファイル（例: "v2.16.48"）</para></listitem>
          <listitem><para><literal>regexExtract(Name, "([^_]+)_([^_]+)\.txt", 2) like
"test*"</literal> - ファイル名の 2 番目の部分が "test" で始まるファイル</para></listitem>
          <listitem><para><literal>le:regexExtract(Line, "(\d+)", 0, 1)</literal> - 各行の 2
番目の数値を抽出します（offset=1）</para></listitem>
          <listitem><para><literal>(Extension = "log" and Size > 10MB) or (Date &lt; today() -
7days)</literal> - 大きなログファイルまたは1週間以上前のファイル</para></listitem>
          <listitem><para><literal>AttrStr not contains "H" and Name like "*.tmp"</literal> -
非表示でない一時ファイル</para></listitem>
          <listitem><para><literal>isWithin(Extension, "a", "m") and inRange(Size, 0, 1MB)</literal> -
拡張子が「a」から「m」の範囲で、サイズが1MB未満のファイル</para></listitem>
          <listitem><para><literal>toLower(Name) = "readme.txt"</literal> - 大文字・小文字を区別しないファイル名の一致判定</para></listitem>
          <listitem><para><literal>toHalfWidth(Name) like "*.txt"</literal> - 全角を半角に変換した後で一致判定</para></listitem>
          <listitem><para><literal>trim(Name) = "readme.txt"</literal>- 先頭および末尾の空白を除去したファイル名に一致</para></listitem>
          <listitem><para><literal>trimLeft(Column("Value")) = "123"</literal> -
先頭の空白を除去した後の列の値を照合します（テーブルモード）</para></listitem>
          <listitem><para><literal>trimRight(Line) contains "end"</literal> - 行（末尾の空白を除いたもの）に "end"
が含まれているか確認します</para></listitem>
          <listitem><para><literal>EOL = 3</literal>- CRLF（Windows）形式の改行コードを含むファイル</para></listitem>
          <listitem><para><literal>EOLStr = "LF"</literal>- LF（Unix）改行コードを含むファイル</para></listitem>
          <listitem><para><literal>allof(EOL = 1)</literal>- 左(中央)右すべてのファイルでLF改行コードを使用</para></listitem>
          <listitem><para><literal>leftprop("System.Title") != none</literal>- 左側のファイルにはtitleプロパティが設定</para></listitem>
          <listitem><para><literal>prop("System.Author") = none</literal>-
左(中央)右何れかにauthorプロパティが設定されていない</para></listitem>
          <listitem><para><literal>if(LeftExists, LeftSize, 0) == 0</literal> -
左側のファイルが存在しないか空ファイルかどうか</para></listitem>
          <listitem><para><literal>Different</literal> - 差異のあるファイル／フォルダーのみを表示します（表示フィルター専用）</para></listitem>
          <listitem><para><literal>Identical</literal> - 同一のファイル／フォルダーのみを表示します（表示フィルター専用）</para></listitem>
          <listitem><para><literal>allof(Binary)</literal> - すべての側でバイナリであるファイルのみを表示します（表示フィルター専用）</para></listitem>
          <listitem><para><literal>DifferentLeftMiddle and not DifferentMiddleRight</literal> -
3方向比較において、左と中央のみが異なるファイルを表示します（表示フィルター専用）</para></listitem>
        </itemizedlist>
      </section>
    </section>
  </section>

  <section id="Filters_FileFilter">
    <title>ファイルフィルターの使用<indexterm>
        <primary>フィルター</primary>

        <secondary>ファイルフィルター</secondary>
      </indexterm><indexterm>
        <primary>フィルター</primary>

        <secondary>フォルダー比較で</secondary>
      </indexterm></title>

    <para><glossterm>ファイルフィルター</glossterm>は、拡張子 <filename>flt</filename>のテキストファイルです。
これらは、フォルダー比較用の複数のフィルタールールを適用することを可能にします。
ファイルマスクと異なり、ファイルフィルターは、含むか除外、どちらかにマッチすることができます。</para>

    <para><indexterm>
        <primary>ファイルフィルター</primary>

        <secondary>テンプレート</secondary>
      </indexterm>
WinMergeは、たくさんの定義済ファイルフィルターをインストールします。
もし、必要なフィルターが、これらのファイルフィルターで提供されていなかったら、 自分自身で作成することができます。
タスクをもっと簡単にするために、WinMergeは、
<filename>FileFilter.tmpl</filename>という名前のテンプレートも提供しています。
このセクションは、比較にファイルフィルターを適用する方法と、ファイルフィルターの文法を説明します。 <xref
linkend="Filters_dlg" />では、フィルターの追加、編集、管理方法について説明します。</para>

    <section id="Filters_FileFilterLoc">
      <title>ファイルフィルターの場所<indexterm>
          <primary>フィルターフォルダー</primary>

          <secondary>場所</secondary>
        </indexterm><indexterm>
          <primary>ファイルフィルター</primary>

          <secondary>場所</secondary>
        </indexterm></title>

      <para>WinMergeは、次の場所のファイルフィルターを自動的に検出します:</para>

      <variablelist>
        <varlistentry>
          <term>WinMerge インストールフォルダーのFilters フォルダー</term>

          <listitem>
            <para>ここには、定義済ファイルフィルターがインストールされています。例えば、 <filename>C:\Program
Files\WinMerge\Filters</filename>。 システム上のすべてのユーザーに有効にするために、
ここにファイルフィルターを作成、または、コピーすることができます。</para>

            <para>新しいファイルフィルターを作る前に、定義済フィルターに必要なものが含まれているか確認してください。
含まれていない場合、定義済ファイルの中から役立つルールが見つかるかもしれません。</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>デフォルトプライベートフィルターフォルダー</term>

          <listitem>
            <para>このフォルダーの場所は、WinMerge オプションの、システムページで定義されています。
デフォルトでは、あなたのユーザープロファイルフォルダーのサブフォルダーとして指定されています (Windows
10なら、<filename>Documents\WinMerge\Filters</filename>)。
通常、ここに作成、または、コピーされたフィルターは、 あなただけが見ることができます。
新しいファイルフィルターを作成したら、それらをプライベートにするために、 ここにコピーすることができます。</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para>その他のフォルダーにあるファイルフィルターを適用する前に、 それらをインストールしなければなりません。</para>
    </section>

    <section id="Filters_FileFilterApply">
      <title>ファイルフィルターの適用<indexterm>
          <primary>ファイルフィルター</primary>

          <secondary>適用</secondary>
        </indexterm></title>

      <para>次のいくつかの方法で、ファイルフィルターを適用することができます:</para>

      <itemizedlist>
        <listitem>
          <para>ファイルまたはフォルダーの選択ダイアログから、フォルダー比較を起動した時:</para>

          <orderedlist>
            <listitem>
              <para><guilabel>1(左)</guilabel>と <guilabel>2(右)</guilabel>のフォルダー選択後、
<guilabel>フィルター</guilabel>フィールドの隣にある
<guibutton>選択</guibutton>ボタンをクリックしてください。</para>
            </listitem>

            <listitem>
              <para>フィルターダイアログで、ファイルフィルターを選択し、
<guilabel>フィルター</guilabel>フィールドへロードするには、ファイルフィルタータブを使用します。</para>

              <note>
                <para>ファイルフィルターが有効になっている(訳注: 何れかのファイルフィルターが選択されている状態)場合、選択されたファイルフィルターは、
<guilabel>フィルター</guilabel>フィールドへ既にロードされています。</para>
              </note>
              <para></para>
            </listitem>

            <listitem>
              <para>比較操作を続けてください。操作を開始した時、 <guilabel>フィルター</guilabel>フィールドのファイルが適用されます。</para>
            </listitem>
          </orderedlist>
        </listitem>

        <listitem>
          <para>フォルダー比較操作起動後(違うフィルターを適用した、 または、フィルターを無効にしてしまった時など)にファイルフィルターを変更するには:</para>

          <orderedlist>
            <listitem>
              <para><menuchoice> <guimenu>ツール</guimenu> <guimenuitem>フィルター</guimenuitem>
</menuchoice>をクリックしてください。</para>
            </listitem>

            <listitem>
              <para>フィルターダイアログで、新しいフィルターを設定し、 <guibutton>OK</guibutton>をクリックしてください。</para>
            </listitem>

            <listitem>
              <para>フィルターダイアログを閉じた時、新しいフィルターは自動では適用されません: フォルダー比較ウィンドウ中で新しい結果を見るには、
<keycap>F5</keycap>を押下してください。</para>
            </listitem>
          </orderedlist>
        </listitem>

        <listitem>
          <para><indexterm>
              <primary>コマンドライン</primary>

              <secondary>ファイルフィルターの適用</secondary>
            </indexterm>WinMerge コマンドラインから、
フォルダー比較起動時にファイルフィルターを指定するには、 <option>-f</option>フラグを使用してください。</para>
        </listitem>
      </itemizedlist>
    </section>

    <section id="Filters_FileFilterSyntax">
      <title>ファイルフィルターの文法<indexterm>
          <primary>ルール</primary>

          <secondary>ファイルフィルター</secondary>
        </indexterm><indexterm>
          <primary>ファイルフィルター</primary>

          <secondary>構文</secondary>
        </indexterm></title>

      <para>このセクションは、WinMerge ファイルフィルターの文法と、記述のためのガイドラインの提供について説明します。</para>

      <para>コメント記号は、 <code>##</code>です。 コメント記号の後にある、行内のすべての文字は無視されます。
WinMergeは、ルール中のほとんどの空白文字を無視します。
しかしながら、通常は、コメントの前に1つか複数の空白文字(スペースかタブ)が置かれるでしょう。 ルール中で、
<code>##</code>を文字列として使用するには、後ろの空白文字を取り除いてください。</para>

      <para>ファイルフィルターで、まずはじめに必要な2行は:</para>

      <variablelist>
        <varlistentry>
          <term>name</term>

          <listitem>
            <para>ファイルダイアログに表示されるフィルター名です</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>def</term>

          <listitem>
            <para>適用されるフィルタータイプです。次の値のうち、1つを指定してください:</para>

            <variablelist>
              <varlistentry>
                <term>include</term>

                <listitem>
                  <para>指定されたルールにマッチしたアイテム以外はすべて含めます。</para>
                </listitem>
              </varlistentry>

              <varlistentry>
                <term>exclude</term>

                <listitem>
                  <para>指定されたルールにマッチしたアイテム以外はすべて除外します。</para>

                  <para>excludeメソッドを選択した時は、サブフォルダーを指定する<guilabel>d</guilabel>(ディレクトリ)ルールも追加しなければなりません。このように、すべてのサブフォルダーを指定するのは、通常良いアイデアです:</para>

                  <screen>d: \\*$ ## Subfolders</screen>
                </listitem>
              </varlistentry>
            </variablelist>

            <tip>
              <para>これらの用語で混乱しないでください。ファイルフィルターの<guilabel>include</guilabel>ルールは、「何を含めるか」を指定するわけではありません。「何を<emphasis>含めない</emphasis>」かを指定します。同様に、<guilabel>exclude</guilabel>ルールは、「何を除外する」かを指定するわけではありません。「何を除外しないか」を指定します。</para>
            </tip>
          </listitem>
        </varlistentry>
      </variablelist>

      <para>次に、ファイルには 1 つ以上のフィルター ルールが含まれている必要があります。ルールは好きなだけ追加できます。 1 行に 1
つのルールが必要であり、各ルールは完全に 1 行に収まる必要があります (ルール内で改行は許可されません)。
ルールは型指定子で始まり、その後に正規表現またはフィルター式が続きます。  サポートされている型指定子は次のとおりです。</para>

      <variablelist>
        <varlistentry><term>f: <replaceable>正規表現</replaceable></term><listitem><para>正規表現を使用してファイル名を照合する</para></listitem></varlistentry>
        <varlistentry><term>f!: <replaceable>正規表現</replaceable></term><listitem><para>正規表現に一致するファイルを除外する (2.16.19 以降で利用可能)</para></listitem></varlistentry>
        <varlistentry><term>d: <replaceable>正規表現</replaceable></term><listitem><para>正規表現を使用してフォルダー名を一致させる</para></listitem></varlistentry>
        <varlistentry><term>d!: <replaceable>正規表現</replaceable></term><listitem><para>正規表現に一致するフォルダーを除外する (2.16.19 以降で利用可能)</para></listitem></varlistentry>
        <varlistentry><term>fe: <replaceable>式</replaceable></term><listitem><para>ファイルに対するフィルター式（例: fe:Size &lt; 1KB）（2.16.49 以降で使用可能）</para></listitem></varlistentry>
        <varlistentry><term>fe!: <replaceable>式</replaceable></term><listitem><para>ファイルを除外するためのフィルター式（2.16.49 以降で使用可能）</para></listitem></varlistentry>
        <varlistentry><term>de: <replaceable>式</replaceable></term><listitem><para>フォルダーに対するフィルター式（2.16.49 以降で使用可能）</para></listitem></varlistentry>
        <varlistentry><term>de!: <replaceable>式</replaceable></term><listitem><para>フォルダーを除外するためのフィルター式（2.16.49 以降で使用可能）</para></listitem></varlistentry>
        <varlistentry><term>e: <replaceable>式</replaceable></term><listitem><para>ファイルとフォルダー両方に適用されるフィルター式（例: e:Name like "Common*.*"）（2.16.56 以降で使用可能）</para></listitem></varlistentry>
        <varlistentry><term>e!: <replaceable>expr</replaceable></term><listitem><para>ファイルとフォルダー両方を除外するためのフィルター式（2.16.56 以降で使用可能）</para></listitem></varlistentry>
      </variablelist>

      <para>多くの正規表現の特殊文字の中で、次の文字は、ファイルフィルターでは特に重要です: <indexterm>
          <primary>正規表現</primary>

          <secondary>フィルタ内の特殊文字</secondary>
        </indexterm><indexterm>
          <primary>正規表現</primary>

          <secondary>ファイルフィルター内</secondary>
        </indexterm></para>

      <variablelist>
        <varlistentry>
          <term>^ (行頭)</term>

          <listitem>
            <para>ルールが正しく動作するために頻繁に必要になります。</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>$ (行末)</term>

          <listitem>
            <para>ルールが正しく動作するために頻繁に必要になります。例えば:</para>

            <screen>\.c$ ## 拡張子 
              <filename>c</filename>のファイルのみにマッチします。
              \.c ## <filename>cpp</filename>や 
              <filename>com</filename>のような、拡張子が 
              <filename>c</filename>で始まるファイルにマッチします。</screen>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>\ (エスケープ)</term>

          <listitem>
            <para>通常の文字を、特殊文字にマッチさせるために使います。 例えば、フォルダー名にマッチするために、 フォルダー区切り文字のバックスラッシュの前に、
バックスラッシュを置きます(<code>\\</code>)。 ファイル名中のドットにマッチするために、
バックスラッシュを指定し、その後にドットを置きます(<code>\.</code>)。</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para>特殊文字やワイルドカードは、ファイル名とマッチさせるためには、使用されません。
ある型のすべてのファイル名にマッチするためには、単にファイル名を省略します。</para>

      <para>ルールは、大文字・小文字を区別しません。例えば、 <code>f: \.bat$</code>は、
<filename>winmerge.bat</filename>と <filename>compare.BAT</filename>にマッチします。</para>

      <example>
        <title>ファイルフィルタールールの例</title>

        <para>シンプルなファイルフィルタールール:</para>

<screen>f: \.cpp$ ## <filename>*.cpp</filename>ファイルにマッチ
          f: \.h$ ## <filename>*.h</filename>ファイルにマッチ
          f: ^My ## <filename>My*.*</filename>ファイルにマッチ
          f: Dlg\. ## <filename>*Dlg.*</filename>ファイルにマッチ
          d: \\test$ ## <filename>test</filename>フォルダーにマッチ
          d: ^\\Build$ ## <filename>Build</filename>フォルダーマッチ
          d: Temp$ ## <filename>*Temp</filename>フォルダーにマッチ (例:<filename>FirstTemp</filename>)
          d: Src ## <filename>*Src*</filename>フォルダーにマッチ</screen><para>いくつかのルールは、もっと複雑な正規表現です:</para>

<screen format="linespecific">          f: ^\.#.*$ ## <filename>.#filename.version</filename>ファイル
          f: Dlg\.c(pp)?$ ## <filename>*Dlg.c</filename>と<filename>*Dlg.cpp</filename>ファイル
          f: ^I.*\.h$ ## <filename>I*.h</filename>ファイル
          f: Srv[1-9]\.def$ ## <filename>*Srv1.def</filename> から <filename>*Srv9.def</filename>ファイル
          f: ^[h,k,m] ## <filename>h*.*</filename>d、<filename>k*.*</filename>、<filename>m*.*</filename>ファイル</screen></example>
    </section>
  </section>

  <section id="Filters_LineFilter">
    <title>行フィルターの使用<indexterm>
        <primary>フィルター</primary>

        <secondary>行</secondary>
      </indexterm><indexterm>
        <primary>フィルター</primary>

        <secondary>ファイル比較で</secondary>
      </indexterm></title>

    <para>ファイル比較で単一行を無視するために、行フィルターを使用することができます。 例えば、コメント、生成されたコードの決まった型や、
バージョン管理システムのタイムスタンプの様なものを無視するために、 行フィルターを使うかもしれません。各行フィルターは1つのルールです。
ファイル比較のために、たくさんの行フィルターを使用することができます。</para>

    <para>フィルターの追加、編集、管理については、 <xref linkend="Filters_dlg" />を参照してください。</para>

    <section id="Filters_LineFilterApply">
      <title>行フィルターの適用</title>

      <para>次の方法で、行フィルターを適用することができます:</para>

      <itemizedlist>
        <listitem>
          <para>ファイルまたはフォルダーの選択ダイアログから、 ファイル比較を起動する場合</para>

          <orderedlist>
            <listitem>
              <para><guilabel>1(左)</guilabel>と <guilabel>2(右)</guilabel>のファイル選択後、
<guilabel>フィルター</guilabel>フィールドの隣の <guibutton>選択</guibutton>をクリックしてください。</para>
            </listitem>

            <listitem>
              <para>フィルターダイアログで、使用したい行フィルターを有効化するため、 また、現在どの行フィルターが有効かを確認するには、行フィルタータブを使います。</para>

              <note>
                <para><guilabel>フィルター</guilabel>フィールドは、 どの行フィルターが有効化されているかを表示しません。</para>
              </note>
              <para></para>
            </listitem>

            <listitem>
              <para>ファイル比較操作を続けてください。 操作を開始した時に、有効化された行フィルターが適用されます。</para>
            </listitem>
          </orderedlist>
        </listitem>

        <listitem>
          <para>既に、ファイル比較操作を起動後 (違うフィルターを適用した、または、フィルターを無効にしてしまった時など)は、</para>

          <orderedlist>
            <listitem>
              <para><menuchoice> <guimenu>ツール</guimenu> <guimenuitem>フィルター</guimenuitem>
</menuchoice>をクリックしてください。</para>
            </listitem>

            <listitem>
              <para>ファイルフィルタータブを開いてください。</para>
            </listitem>

            <listitem>
              <para>あなたが適用したい行フィルターの行にチェックしてください。 また、適用したくないフィルターは、チェックを外してください。</para>

              <para><guibutton>新規</guibutton>、 <guibutton>編集</guibutton>、
<guibutton>削除</guibutton>ボタンを使用して、 フィルターを追加、編集、削除することもできます。</para>
            </listitem>

            <listitem>
              <para>行フィルター機能を有効にするには、 <guilabel>行フィルターを有効にする</guilabel>にチェックしてください。
行フィルター機能を無効にするには、チェックを外してください。</para>
            </listitem>

            <listitem>
              <para><guibutton>OK</guibutton>をクリックして、 ファイルフィルターダイアログを閉じてください。</para>
            </listitem>

            <listitem>
              <para><keycap>F5</keycap>を押下して変更を適用し、 ファイル比較ウィンドウをリフレッシュしてください。</para>
            </listitem>
          </orderedlist>
        </listitem>
      </itemizedlist>
    </section>

    <section id="Filters_LineFilterSyntax">
      <title>行フィルターの文法<indexterm>
          <primary>ルール</primary>

          <secondary>行フィルター</secondary>
        </indexterm><indexterm>
          <primary>フィルター</primary>

          <secondary>行</secondary>
        </indexterm><indexterm>
          <primary>正規表現</primary>

          <secondary>インラインフィルター</secondary>
        </indexterm></title>

      <para>行フィルターは、行フィルタールールが有効化されている場合、 比較ファイル中の単一行の差異毎に評価されるルールです。
単一行の差異にルールがマッチした時、その差異は無視されます。</para>

      <para>無視された差異は、ファイル比較ウィンドウ中では、
<guilabel>無視された差異</guilabel>の色(WinMergeオプションの色ページで定義されている)  でマークされます。
これは、その他のタイプと無視された差異を区別できるようにします。 しかし、無視された差異は、選択やマージすることができません。</para>

      <para>行フィルターマッチは、2つの考えに基づいて記述されるかもしれません:</para>

      <itemizedlist>
        <listitem>
          <para>ルールが、行のある部分にマッチした時、差異全体が無視されます。 つまり、行の一部だけをフィルターすることはできません。
例えば、2つのファイルに、次の単一行の差異があると仮定した場合:</para>

          <formalpara>
            <title>File1:</title>

            <para><screen># Jean Sibelius</screen></para>
          </formalpara>

          <formalpara>
            <title>File2:</title>

            <para><screen># Janne Sibelius</screen></para>
          </formalpara>

          <para>フィルターなしの場合、行は差異として検出されます。 しかし、行フィルターを
<code>^#</code>の式とともに適用する場合、その行は同一であると評価されます。
なぜなら、式は、両方のファイルにマッチする最初の文字のみを指定しているからです。</para>
        </listitem>

        <listitem>
          <para>ルールは、すべての行にマッチした場合に、複数行差異に適用されます。例えば、次の2行の差異を考えてみてください:</para>

          <formalpara>
            <title>File1:</title>

            <para><screen># Jean Sibelius
# Pekka Himanen</screen></para>
          </formalpara>

          <formalpara>
            <title>File2:</title>

            <para><screen># Janne Sibelius
Pekka Himanen</screen></para>
          </formalpara>

          <para>同じ <code>^#</code>ルールは、1行目にマッチしますが、2行目にはマッチしません。 したがって、差異は無視されません。</para>
        </listitem>
      </itemizedlist>

      <tip>
        <para>パターンの正確さを制御するために、 行頭(<code>^</code>)と行末(<code>$</code>)
記号を使用することは、大抵、良い習慣です。 なぜなら、式が、行のある部分にマッチした場合に、 ルールが適用されるからです。</para>
      </tip>

      <example>
        <title>行フィルターサンプル</title>

<screen format="linespecific">^MYTAG$</screen><para>厳密に、 <literal>MYTAG</literal>にマッチする行をフィルターします</para>

<screen format="linespecific">^::</screen><para><literal>::</literal>で始まる行をフィルターします</para>

<screen format="linespecific">^/\*.*\*/$</screen><para><literal><constant>/*</constant></literal>で始まり、<literal>*/</literal>で終わる行をフィルターします</para>

<screen format="linespecific">^[1-5]00</screen><para>数字の、100、200、300、400、500 で始まる行をフィルターします</para>
      </example>

      <example>
        <title>CVS の Id 行にマッチする行フィルタールール</title>

        <para>CVS の Id 行は、次の様なものです:</para>

<screen>// $Id: Filters.xml 7591 2013-01-20 15:47:42Z christianlist $</screen><para>そしてこれは、次のルールでフィルターできます:</para>

<screen>^// \WId: .*\$</screen></example>

      <example>
        <title>poファイルの行コメントフィルター</title>

        <para>poファイルの行コメントは、次の様なものです:</para>

<screen>#: src/filename.c:766</screen><para>そしてこれは、次のルールでフィルターできます:</para>

<screen>^#</screen></example>
    </section>
  </section>

  <section id="Filters_DisplayLineFilter">
    <title>表示行フィルターの使用<indexterm>
        <primary>表示行フィルター</primary>
      </indexterm></title>

    <para>表示行フィルターは、ファイル比較ウィンドウに表示される行を制御します。フィルターにマッチしない行は非表示になりますが、比較結果自体には影響しません。</para>

    <section id="Filters_DisplayLineFilterApply">
      <title>表示フィルターバーを開く</title>

      <para>次のいずれかの方法で表示フィルターバーを開いてください:</para>

      <itemizedlist>
        <listitem>
          <para><menuchoice> <guimenu>表示</guimenu> <guimenuitem>表示フィルターバー</guimenuitem>
</menuchoice>
をクリックするか、<keycombo><keycap>Ctrl</keycap><keycap>Shift</keycap><keycap>L</keycap></keycombo>
を押します。</para>
        </listitem>
        <listitem>
          <para>ファイル比較ウィンドウで選択テキストを右クリックし、<menuchoice> <guimenu>フィルターに追加</guimenu>
<guimenuitem>表示フィルターに追加する</guimenuitem> </menuchoice> を選択します。WinMerge
は選択テキストから自動的に <literal>Line contains "..."</literal> 式を生成し、フィルターバーを開きます。</para>
        </listitem>
      </itemizedlist>

      <para>フィルターを解除するには、入力フィールドをクリアして <keycap>Enter</keycap>
を押します。フィルターを有効にしたままフィルターバーを非表示にするには、閉じるボタンをクリックします。</para>
    </section>

    <section id="Filters_DisplayLineFilterInput">
      <title>フィルターの入力</title>

      <para>表示フィルターバーは、入力が <literal>le:</literal> プレフィックスで始まるかどうかによって決まる 2
つの形式の入力を受け付けます:</para>

      <variablelist>
        <varlistentry>
          <term>プレーン文字列（プレフィックスなし）</term>
          <listitem>
            <para><literal>le:</literal> プレフィックスのない入力はリテラル文字列として扱われます。WinMerge
はその文字列を含む行のみを表示します。内部的には、入力は <literal>le:Line contains
"<replaceable>input</replaceable>"</literal> と等価です。</para>
            <para>例: <userinput>TODO</userinput> と入力すると、テキスト <literal>TODO</literal>
を含むすべての行が表示されます。</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><literal>le:</literal> プレフィックス（フィルタ式）</term>
          <listitem>
            <para>入力が <literal>le:</literal> で始まる場合、残りの部分はフィルタ式として解釈されます。<xref
linkend="Filters_DisplayLineFilter_Syntax"/> で説明されているすべての式の構文が使用できます。</para>
            <para>例: <userinput>le:Different and Line contains "ERROR"</userinput></para>

            <important>
              <para><literal>le:</literal>
プレフィックスは入力の先頭に記述する必要があります。それ以外の位置にある場合、入力全体がプレーン文字列として扱われます。</para>
              <para>例えば、<userinput>Hello or le:Line contains "Hello"</userinput>
はフィルター式を<emphasis>含みません</emphasis>。入力全体が、文字列 <literal>Hello or le:Line
contains "Hello"</literal> を検索するためのリテラル文字列として扱われます。</para>
            </important>
          </listitem>
        </varlistentry>
      </variablelist>
    </section>

    <section id="Filters_DisplayLineFilter_Syntax">
      <title>フィルタ式の構文</title>

      <para>表示行フィルタ式はフォルダー比較フィルタ式と同じエンジンを使用します (<xref
linkend="FilterExpression_Syntax"/> を参照)。個々の行に作用する以下の追加属性および関数が利用できます。</para>

      <section id="Filters_DisplayLineFilter_Attrs">
        <title>行属性</title>

        <para>サイド固有のプレフィックスをサポートする属性は、<literal>Left</literal>、<literal>Middle</literal>、<literal>Right</literal>
のプレフィックスを受け付けます (例:
<literal>LeftLine</literal>、<literal>RightLineLength</literal>)。プレフィックスのない属性はすべてのペインにわたって評価されます。</para>

        <variablelist>
          <varlistentry>
            <term><varname>Line</varname></term>
            <listitem><para>現在の行のテキスト内容。サイド固有のプレフィックスをサポートします。例: <literal>Line contains "TODO"</literal></para></listitem>
          </varlistentry>
          <varlistentry>
            <term><varname>LineLength</varname></term>
            <listitem><para>現在の行の文字数。サイド固有のプレフィックスをサポートします。例: <literal>LineLength &gt; 120</literal></para></listitem>
          </varlistentry>
          <varlistentry>
            <term><varname>LineNumber</varname></term>
            <listitem><para>ファイル内の実際の行番号 (1 基底)。ゴースト行は含みません。サイド固有のプレフィックスをサポートします。例: <literal>LineNumber
&lt;= 50</literal></para></listitem>
          </varlistentry>
          <varlistentry>
            <term><varname>ViewLineNumber</varname></term>
            <listitem><para>ゴースト行を含む表示上の行番号 (1 基底)。グローバル属性（サイドプレフィックスなし）。例: <literal>ViewLineNumber
&lt;= 100</literal></para></listitem>
          </varlistentry>
          <varlistentry>
            <term><varname>Different</varname></term>
            <listitem><para>行が差異ブロックの一部である場合に true。グローバル属性。例: <literal>Different</literal></para></listitem>
          </varlistentry>
          <varlistentry>
            <term><varname>Identical</varname></term>
            <listitem><para>すべてのペインで行が同一である場合に true。グローバル属性。</para></listitem>
          </varlistentry>
          <varlistentry>
            <term><varname>Trivial</varname></term>
            <listitem><para>行が空白またはその他の無視されるコンテンツのみで異なる場合に true。グローバル属性。例: <literal>Different or
Trivial</literal></para></listitem>
          </varlistentry>
          <varlistentry>
            <term><varname>Exists</varname></term>
            <listitem><para>ペインに行が存在する場合（ゴースト行でない場合）に true。サイド固有のプレフィックスをサポートします。例: <literal>LeftExists
and not RightExists</literal></para></listitem>
          </varlistentry>
          <varlistentry>
            <term><varname>Missing</varname></term>
            <listitem><para>ペインの行がゴースト行である場合に true。<varname>Exists</varname> の逆です。サイド固有のプレフィックスをサポートします。</para></listitem>
          </varlistentry>
          <varlistentry>
            <term><varname>Moved</varname></term>
            <listitem><para>行が移動された行として検出された場合に true。サイド固有のプレフィックスをサポートします。</para></listitem>
          </varlistentry>
          <varlistentry>
            <term><varname>Bookmarked</varname></term>
            <listitem><para>行にブックマークがある場合に true。サイド固有のプレフィックスをサポートします。</para></listitem>
          </varlistentry>
          <varlistentry>
            <term><varname>DifferentLeftMiddle</varname>,
<varname>DifferentMiddleRight</varname>,
<varname>DifferentLeftRight</varname></term>
            <listitem><para>指定されたペアのペインがこの行で異なる場合に true。3方向比較のみ（ただし
<varname>DifferentLeftRight</varname> は 2方向比較でも動作します）。グローバル属性。例:
<literal>DifferentLeftMiddle and not DifferentMiddleRight</literal></para></listitem>
          </varlistentry>
          <varlistentry>
            <term><varname>EOL</varname></term>
            <listitem><para>現在の行の行末スタイルを整数値で表します。サイド固有のプレフィックスをサポートします。値: 0 = なし、1 = LF、2 = CR、3 = CRLF
例: <literal>le:EOL = 3</literal> は CRLF 行末の行のみを表示します</para></listitem>
          </varlistentry>
          <varlistentry>
            <term><varname>EOLStr</varname></term>
            <listitem><para>現在の行の行末スタイルを文字列で表します。サイド固有のプレフィックスをサポートします。値: "None"、"LF"、"CR"、"CRLF" 例:
<literal>le:EOLStr = "LF"</literal> は LF 行末の行のみを表示します</para></listitem>
          </varlistentry>
          <varlistentry>
            <term><varname>Column</varname>, <varname>ColumnCount</varname> (テーブルモードのみ)</term>
            <listitem><para>CSV/テーブルモードでのセル内容と列数。サイド固有のプレフィックスをサポートします。例: <literal>Column("Status") =
"FAIL"</literal></para></listitem>
          </varlistentry>
          <varlistentry>
            <term><function>LineAt</function>(<replaceable>lineNumber</replaceable>),
<function>LineOffsetAt</function>(<replaceable>offset</replaceable>)</term>
            <listitem><para>絶対行番号または現在行からの相対オフセット位置にある行のテキスト。サイド固有のプレフィックス関数をサポートします。例:
<literal>le:Different and RightLineOffsetAt(-1) matches "^//"</literal></para></listitem>
          </varlistentry>
          <varlistentry>
            <term><function>Column</function>(<replaceable>indexOrName</replaceable>),
<function>ColumnAt</function>(<replaceable>line</replaceable>,
<replaceable>indexOrName</replaceable>),
<function>ColumnOffsetAt</function>(<replaceable>offset</replaceable>,
<replaceable>indexOrName</replaceable>)  (テーブルモードのみ)</term>
            <listitem><para>現在行、絶対行、または相対行のインデックスまたは名前によるセル内容。例: <literal>le:RightColumn("Category") !=
ColumnOffsetAt(-1, "Category")</literal></para></listitem>
          </varlistentry>
        </variablelist>
      </section>

      <section id="Filters_DisplayLineFilter_Funcs">
        <title>行関数</title>

        <para>
表示行フィルタ式は <xref linkend="FilterExpression_Functions"/> で説明されている関数も使用できます。</para>

        <variablelist>
          <varlistentry>
            <term><function>matchContext</function>(<replaceable>expr</replaceable>,
<replaceable>linesBefore</replaceable>,
<replaceable>linesAfter</replaceable>)</term>
            <listitem><para><replaceable>expr</replaceable> にマッチする行の前後
<replaceable>linesBefore</replaceable> 行以内または
<replaceable>linesAfter</replaceable> 行以内に現在の行がある場合に true。例:
<literal>le:matchContext(Different, 3, 3)</literal></para></listitem>
          </varlistentry>
          <varlistentry>
            <term><function>matchNumber</function>(<replaceable>expr</replaceable>)</term>
            <listitem><para>マッチするすべての行の中での現在行の 1 基底インデックス。行がマッチしない場合は undefined を返します。例:
<literal>le:matchNumber(Different) = 1</literal> はマッチする最初の行（最初の差異行）のみを表示します。</para></listitem>
          </varlistentry>
          <varlistentry>
            <term><function>matchCount</function>(<replaceable>expr</replaceable>)</term>
            <listitem><para>ファイル全体で <replaceable>expr</replaceable> にマッチする行の合計数。例:
<literal>le:matchNumber(Different) = matchCount(Different)</literal>
はマッチする最後の行（最後の差異行）のみを表示します。</para></listitem>
          </varlistentry>
          <varlistentry>
            <term><function>matchBlockNumber</function>(<replaceable>expr</replaceable>)</term>
            <listitem><para>現在行を含むマッチングブロックの 1 基底ブロック番号を返します。現在行がいずれのマッチングブロックにも含まれない場合は
<literal>none</literal> を返します。例: <literal>le:matchBlockNumber(Different) =
1</literal> は最初の差異ブロック内の行のみを表示します。</para></listitem>
          </varlistentry>
          <varlistentry>
            <term><function>matchBlockOffset</function>(<replaceable>expr</replaceable>)</term>
            <listitem><para>マッチングブロック内での現在行の 1 基底オフセットを返します。現在行がいずれのマッチングブロックにも含まれない場合は
<literal>undefined</literal> を返します。例:
<literal>le:matchBlockOffset(Different) = 1</literal> は各差異ブロックの最初の行のみを表示します。</para></listitem>
          </varlistentry>
          <varlistentry>
            <term><function>matchBlockSize</function>(<replaceable>expr</replaceable>)</term>
            <listitem><para>現在行を含むマッチングブロックのサイズ（行数）を返します。現在行がいずれのマッチングブロックにも含まれない場合は
<literal>undefined</literal> を返します。例: <literal>le:matchBlockSize(Different)
&gt; 5</literal> は 5 行より大きい差異ブロック内の行のみを表示します。</para></listitem>
          </varlistentry>
          <varlistentry>
            <term><function>matchBlockCount</function>(<replaceable>expr</replaceable>)</term>
            <listitem><para>ファイル内のマッチングブロックの合計数。例: <literal>le:matchBlockNumber(Different) =
matchBlockCount(Different)</literal> は最後の差異ブロック内の行のみを表示します。</para></listitem>
          </varlistentry>
          <varlistentry>
            <term><function>matchDistance</function>(<replaceable>expr</replaceable>),
<function>matchDistanceBefore</function>(<replaceable>expr</replaceable>),
<function>matchDistanceAfter</function>(<replaceable>expr</replaceable>)</term>
            <listitem><para>最も近いマッチング範囲までの行距離（両方向、前方のみ、または後方のみ）。例: <literal>le:matchDistance(Different)
&lt;= 5</literal></para></listitem>
          </varlistentry>
          <varlistentry>
            <term><function>matchInside</function>(<replaceable>beginExpr</replaceable>,
<replaceable>endExpr</replaceable>)</term>
            <listitem><para>現在行が <replaceable>beginExpr</replaceable> にマッチする行と次の
<replaceable>endExpr</replaceable> にマッチする行の間にある場合（両端含む）に true。例:
<literal>le:matchInside(Line matches "^#ifdef", Line matches
"^#endif")</literal></para></listitem>
          </varlistentry>
          <varlistentry>
            <term><function>average</function>(<replaceable>expr</replaceable>),
<function>average</function>(<replaceable>expr</replaceable>,
<replaceable>condition</replaceable>)</term>
            <listitem><para>ファイル内のすべての行に対して <replaceable>expr</replaceable>
を評価して得られる数値の平均（算術平均）を計算します。<replaceable>condition</replaceable>
が指定された場合、<replaceable>condition</replaceable> が true
と評価される行のみが計算に含まれます。数値でない結果は無視されます。数値が見つからない場合は undefined を返します。例:
<literal>le:toInt(Column("Price")) &gt;
average(toInt(Column("Price")))</literal> は価格が平均価格を超える行を表示します。条件付きの例:
<literal>le:average(toInt(Column("Score")), Column("Status") =
"PASS")</literal> はステータスが "PASS" の行の平均スコアを計算します。</para></listitem>
          </varlistentry>
          <varlistentry>
            <term><function>maximum</function>(<replaceable>expr</replaceable>),
<function>maximum</function>(<replaceable>expr</replaceable>,
<replaceable>condition</replaceable>)</term>
            <listitem><para>ファイル内のすべての行に対して <replaceable>expr</replaceable>
を評価して得られるすべての結果の中の最大値を返します。<replaceable>condition</replaceable>
が指定された場合、<replaceable>condition</replaceable> が true
と評価される行のみが考慮されます。数値、文字列（アルファベット順比較）、タイムスタンプで動作します。値が見つからない場合は undefined
を返します。例: <literal>le:toInt(Column("Quantity")) =
maximum(toInt(Column("Quantity")))</literal> は最大数量の行を表示します。</para></listitem>
          </varlistentry>
          <varlistentry>
            <term><function>minimum</function>(<replaceable>expr</replaceable>),
<function>minimum</function>(<replaceable>expr</replaceable>,
<replaceable>condition</replaceable>)</term>
            <listitem><para>ファイル内のすべての行に対して <replaceable>expr</replaceable>
を評価して得られるすべての結果の中の最小値を返します。<replaceable>condition</replaceable>
が指定された場合、<replaceable>condition</replaceable> が true
と評価される行のみが考慮されます。数値、文字列（アルファベット順比較）、タイムスタンプで動作します。値が見つからない場合は none を返します。例:
<literal>le:Column("Status") = minimum(Column("Status"))</literal>
はアルファベット順で最初のステータス値の行を表示します。</para></listitem>
          </varlistentry>
          <varlistentry>
            <term><function>sum</function>(<replaceable>expr</replaceable>),
<function>sum</function>(<replaceable>expr</replaceable>,
<replaceable>condition</replaceable>)</term>
            <listitem><para>ファイル内のすべての行に対して <replaceable>expr</replaceable>
を評価して得られるすべての数値の合計を計算します。<replaceable>condition</replaceable>
が指定された場合、<replaceable>condition</replaceable> が true
と評価される行のみが計算に含まれます。数値でない結果は無視されます。数値が見つからない場合は undefined を返します。例:
<literal>le:toInt(Column("Quantity")) / sum(toInt(Column("Quantity"))) *
100</literal> は各行の合計数量に対するパーセンテージを計算します。条件付きの例:
<literal>le:sum(toInt(Column("Sales")), Column("Region") = "East")</literal>
は "East" リージョンの総売上を計算します。</para></listitem>
          </varlistentry>
        </variablelist>
      </section>

      <section id="Filters_DisplayLineFilter_Examples">
        <title>例</title>

        <informaltable>
          <tgroup cols="2">
            <thead>
              <row>
                <entry>入力</entry>
                <entry>効果</entry>
              </row>
            </thead>
            <tbody>
              <row>
                <entry><userinput>TODO</userinput></entry>
                <entry>テキスト "TODO" を含む行を表示します（プレーン文字列）</entry>
              </row>
              <row>
                <entry><userinput>le:Different</userinput></entry>
                <entry>差異ブロック内の行のみを表示します</entry>
              </row>
              <row>
                <entry><userinput>le:Different or Trivial</userinput></entry>
                <entry>無視された差異を含むすべての差異を表示します</entry>
              </row>
              <row>
                <entry><userinput>le:matchContext(Different, 3, 3)</userinput></entry>
                <entry>各サイドに 3 行のコンテキストを付けて差異ブロックを表示します</entry>
              </row>
              <row>
                <entry><userinput>le:matchNumber(Different) = 1</userinput></entry>
                <entry>最初の差異行のみを表示します</entry>
              </row>
              <row>
                <entry><userinput>le:matchBlockNumber(Different) &lt;= 3</userinput></entry>
                <entry>最初の 3 つの差異ブロック内の行のみを表示します</entry>
              </row>
              <row>
                <entry><userinput>le:matchBlockOffset(Different) = 1</userinput></entry>
                <entry>各差異ブロックの最初の行のみを表示します</entry>
              </row>
              <row>
                <entry><userinput>le:matchBlockSize(Different) &gt; 10</userinput></entry>
                <entry>10 行より大きい差異ブロック内の行のみを表示します</entry>
              </row>
              <row>
                <entry><userinput>le:Different and Line contains "ERROR"</userinput></entry>
                <entry>差異があり、かつ "ERROR" を含む行を表示します</entry>
              </row>
              <row>
                <entry><userinput>le:strFind(Line, "TODO") &lt; 10</userinput></entry>
                <entry>"TODO" が先頭 10 文字以内に出現する行を表示します</entry>
              </row>
              <row>
                <entry><userinput>le:regexFind(Line, "\d{4}") != none</userinput></entry>
                <entry>4桁の数字を含む行を表示します</entry>
              </row>
              <row>
                <entry><userinput>le:matchContext(Bookmarked, 2, 2)</userinput></entry>
                <entry>2 行のコンテキストを付けてブックマーク行を表示します</entry>
              </row>
              <row>
                <entry><userinput>le:LineNumber &lt;= 50</userinput></entry>
                <entry>最初の 50 行のみを表示します</entry>
              </row>
              <row>
                <entry><userinput>le:EOL = 3</userinput></entry>
                <entry>CRLF (Windows) 行末の行のみを表示します</entry>
              </row>
              <row>
                <entry><userinput>le:EOLStr = "LF"</userinput></entry>
                <entry>LF (Unix) 行末の行のみを表示します</entry>
              </row>
              <row>
                <entry><userinput>le:allof(EOL = 1)</userinput></entry>
                <entry>すべてのペインが LF 行末を使用している行を表示します</entry>
              </row>
              <row>
                <entry><userinput>le:toInt(Column("Count")) &gt; 100</userinput></entry>
                <entry>"Count" 列の値が 100 を超える行を表示します（テーブルモード）</entry>
              </row>
            </tbody>
          </tgroup>
        </informaltable>
      </section>
    </section>
  </section>

  <section id="Filters_DisplayFileFolderFilter">
    <title>表示ファイル/フォルダーフィルターの使用<indexterm>
        <primary>表示ファイル/フォルダーフィルター</primary>
      </indexterm></title>

    <para>フォルダー比較ウィンドウの表示ファイル/フォルダーフィルターは、ファイル比較ウィンドウの表示行フィルターと同じように機能しますが、行ではなくファイルやフォルダーに対して動作します。比較結果に影響を与えることなく、表示するアイテムを制御します。</para>

    <para>表示フィルターバーを開くには、<menuchoice> <guimenu>表示</guimenu>
<guimenuitem>表示フィルターバー</guimenuitem> </menuchoice>
をクリックするか、<keycombo><keycap>Ctrl</keycap><keycap>Shift</keycap><keycap>L</keycap></keycombo>
を押します。</para>

    <para>フィルターバーは、ファイルまたはフォルダーの選択ダイアログの <guilabel>フィルター</guilabel>
フィールドと同じ構文を受け付けます。詳細は <xref linkend="Filters_MaskSyntax"/> および <xref
linkend="FilterExpression_Syntax"/> を参照してください。</para>

    <para>フィルターを解除するには、入力フィールドをクリアして <keycap>Enter</keycap>
を押します。フィルターを有効にしたままフィルターバーを非表示にするには、閉じるボタンをクリックします。</para>

    <para>例:</para>
    <itemizedlist>
      <listitem><para><userinput>*.cpp;*.h</userinput> - C++ ソースおよびヘッダーファイルを表示します</para></listitem>
      <listitem><para><userinput>!.git\;!.vs\</userinput> - .git および .vs フォルダーを除外します</para></listitem>
      <listitem><para><userinput>fe:Different</userinput> - 異なるファイルのみを表示します</para></listitem>
      <listitem><para><userinput>de:Items &gt; 10</userinput> - 10 個以上のアイテムを含むフォルダーを表示します</para></listitem>
      <listitem><para>表示行フィルターはこのダイアログからは設定できません。<menuchoice><guimenu>表示</guimenu>
<guimenuitem>表示フィルターバー</guimenuitem></menuchoice> から開いてください。<xref
linkend="Filters_DisplayLineFilter"/> を参照してください。</para></listitem>
    </itemizedlist>
  </section>

  <section id="Filters_SubstitutionFilter">
    <title>置換フィルタの使用<indexterm>
        <primary>フィルター</primary>

        <secondary>置換</secondary>
      </indexterm><indexterm>
        <primary>フィルター</primary>

        <secondary>ファイル比較で</secondary>
      </indexterm></title>

    <para>TBD</para>
  </section>

  <section id="Filters_dlg">
    <title>フィルターダイアログの使用<indexterm>
        <primary>「フィルタ」ダイアログ</primary>
      </indexterm><indexterm>
        <primary>フィルター</primary>

        <secondary>管理と有効化</secondary>
      </indexterm></title>

    <para>このセクションは、ファイルフィルターと行フィルターの作成・管理機能を提供する、 フィルターダイアログの説明をします。</para>

    <para>フィルターダイアログを開くには、次の何れかの方法を使用してください:</para>

    <itemizedlist>
      <listitem>
        <para>ファイルまたはフォルダーの選択ダイアログで、 <guibutton>フィルター</guibutton>フィールドの右にある、
<guilabel>選択</guilabel>ボタンをクリックしてください。
フォルダー比較用のファイルフィルターを適用したい時は、方法を使用してください。</para>
      </listitem>

      <listitem>
        <para><menuchoice> <guimenu>ツール</guimenu> <guimenuitem>フィルター</guimenuitem>
</menuchoice>をクリックしてください。 この方法は、ファイルまたはフォルダーの選択ダイアログを開いている時以外に使用可能です。</para>
      </listitem>
    </itemizedlist>

    <para>フィルターダイアログには、それぞれの WinMergeフィルター用のタブがあります:</para>

    <variablelist>
      <varlistentry>
        <term>ファイルフィルター</term>

        <listitem>
          <para>フォルダー比較用のファイルフィルターを設定するには、このタブを選択してください。</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>行フィルター</term>

        <listitem>
          <para>ファイル比較用の行フィルターを設定するには、こちらのタブを使用してください。</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>置換フィルター</term>

        <listitem>
          <para>ファイル比較操作の置換フィルターを使用するには、このタブを選択します。</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>表示行フィルター</term>

        <listitem>
          <para>表示行フィルターはこのダイアログからは設定できません。<menuchoice><guimenu>表示</guimenu>
<guimenuitem>表示フィルターバー</guimenuitem></menuchoice> から開いてください。<xref
linkend="Filters_DisplayLineFilter"/> を参照してください。</para>
        </listitem>
      </varlistentry>
    </variablelist>

    <section id="Filters_FileFiltersTab">
      <title>ファイルフィルタータブの使用<indexterm>
          <primary>ファイルフィルター</primary>

          <secondary>有効にする</secondary>
        </indexterm></title>

      <para>このタブの主要部分は、フォルダー比較用に利用可能なファイルフィルターの一覧です。 このリストは、共有、個人、そして、 <xref
linkend="Filters_FileFilterLoc" />で説明されている、
WinMergeが知り得るインストール済みのファイルフィルターを含んでいます。</para>

      <section id="Filters_FileFilterEnabling">
        <title>ファイルフィルターの有効化と無効化</title>

        <para>ファイルフィルターが、フォルダー比較操作で、それを有効にすること、 また、フィルターが使用され始めてから、
現在のフィルターを止めるために無効にすることを可能にしなければなりません:</para>

        <orderedlist>
          <listitem>
            <para>まだ、フィルターダイアログを開いていない場合は、開いてください</para>
          </listitem>

          <listitem>
            <para>ファイルフィルターを選択、もしくは、リストから <guimenuitem> &lt;なし&gt;</guimenuitem>を選択しくてださい。</para>
          </listitem>

          <listitem>
            <para><guibutton> OK</guibutton>をクリックして、 フィルターダイアログを閉じてください。</para>
          </listitem>
        </orderedlist>

        <para>ファイルフィルターを有効にした後でそれらを適用する方法が、いくつかあります。 詳細は、 <xref
linkend="Filters_FileFilterApply" />を参照してください。</para>
      </section>

      <section id="Filters_FileFilterCfg">
        <title>ファイルフィルターの設定</title>

        <para><guilabel>ファイルフィルター</guilabel>リストの管理と フィルターの新規作成には、これらのボタンを使用してください:</para>

        <variablelist>
          <varlistentry>
            <term>テスト</term>

            <listitem>
              <para>フィルターがどのように動作するか素早く確認するには、 リスト中のファイルフィルターを選択し、
<guibutton>テスト</guibutton>をクリックしてください。 詳細は、 <xref
linkend="Filters_TestingDlg" />を参照してください。</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>インストール</term>

            <listitem>
              <para>ファイルフィルターを配置し、フィルターリストへ追加することができます。 ファイルフィルターは、それらをインストールしない限り、
共有フォルダー、デフォルトのプライベートフォルダーのどちらでも検出されません。</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>新規</term>

            <listitem>
              <para>共有フォルダーかプライベートフィルターフォルダーのどちらかに、 ファイルテンプレートの新しいコピーを作成します。 <xref
linkend="Filters_CreatingFile" />で説明されているように、 テンプレートを編集、ルールの追加を行ってください。</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>編集</term>

            <listitem>
              <para>デフォルトエディターでファイルを開くには、リスト中のファイルフィルターを選択し、
<guibutton>編集</guibutton>をクリックしてください。</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>削除</term>

            <listitem>
              <para>ファイルを削除しリストから取り除くには、 リスト中のファイルフィルターを選択し、
<guibutton>削除</guibutton>をクリックしてください。 これで、本当にファイルは削除されました。</para>
            </listitem>
          </varlistentry>
        </variablelist>

        <para><guibutton>OK</guibutton>をクリックして、 フィルターダイアログを閉じた時、変更は保存されます。
行フィルターは、Windowsのレジストリに保存されます。</para>
      </section>

      <section id="Filters_CreatingFile">
        <title>ファイルフィルターの作成</title>

        <para>WinMergeにインストール済のファイルフィルターが、 お望みのフィルターを提供していないなら、あなた自身で作成することができます:</para>

        <orderedlist>
          <listitem>
            <para><menuchoice> <guimenu>ツール</guimenu> <guimenuitem>フィルター</guimenuitem>
</menuchoice>をクリックしてください。 または、ファイルまたはフォルダーの選択ダイアログから、
<guibutton>フィルター</guibutton>フィールドの右にある、
<guilabel>選択</guilabel>ボタンをクリックしてください。</para>
          </listitem>

          <listitem id="Filters_New_step">
            <para>フィルターダイアログのファイルフィルタータブの、<guibutton>新規</guibutton>ボタンをクリックしてください。</para>
          </listitem>

          <listitem>
            <para>共有/プライベートフィルターダイアログで、 <guilabel>共有フィルター</guilabel>、または、
<guilabel>プライベートフィルター</guilabel> (これらを何に使用するかは、 <xref
linkend="Filters_FileFilterLoc" />を参照してください)を選択し、
<keycap>OK</keycap>をクリックしてください。</para>

            <para>お使いのシステムの共有、または、プライベートフォルダーが、 「新しいフィルターのファイル名を指定してください」ダイアログに開きます
(プライベートフォルダーが存在しない場合は、WinMergeが作成します)。</para>
          </listitem>

          <listitem>
            <para>「新しいフィルターのファイル名を指定してください」ダイアログで、 ファイル名を入力し
<guibutton>保存</guibutton>をクリックしてください。</para>

            <note>
              <para>既存のファイル名を選ばないでください: 既存のファイルを編集するには、 <xref linkend="Filters_New_step" />に戻って、
「新規」の代わりに、「編集」をクリックしてください。</para>
            </note>

            <para>WinMergeは、新しいファイルを、テンプレート: <filename>FileFilter.tmpl</filename>を用いて作成し、
デフォルトのテキストエディターでそれを開きます。</para>
          </listitem>

          <listitem>
            <para>テンプレートの編集は、テンプレートの指示に従って、 プレースホルダー名と説明の更新、 <xref
linkend="Filters_FileFilterSyntax" />で説明されている、 フィルタールールの追加を行ってください。
テキストエディターでファイルを保存してください。</para>

            <tip>
              <para>あなたが作成中のルールを、素早くテストしたい場合は、 フィルターダイアログの「テスト」ボタンをクリックしてみてください。 詳細は、<xref
linkend="Filters_TestingDlg" />を参照してください。</para>
            </tip>
            <para></para>
          </listitem>

          <listitem>
            <para>標準の<filename>フィルター</filename>フォルダーに、ファイルフィルターを作成したにも関わらず、フィルターダイアログがその新しいファイルフィルターを表示しない場合は、一度、<guibutton>OK</guibutton>をクリックしてダイアログを閉じてください。次に、<menuchoice><guimenu>ツール</guimenu><guimenuitem>フィルター</guimenuitem></menuchoice>をクリックし、再度ダイアログを開いてください。<guilabel>ファイルフィルター</guilabel>リストは、新しいファイルフィルターを含んでいるでしょう。</para>

            <para>お使いのシステム上の、別の場所にファイルを保存した場合、 あなたがインストールしない限り、WinMergeは、それを検出することができません。
システム上のどこかにあるファイルフィルターを検出させるには:</para>

            <orderedlist numeration="loweralpha">
              <listitem>
                <para>フィルターダイアログの <guibutton>インストール</guibutton>をクリックしてください。</para>
              </listitem>

              <listitem>
                <para>「インストールするファイルフィルターの位置」ダイアログで、システム上の <filename>flt</filename>ファイルを選択し、
<guibutton>開く</guibutton>をクリックしてください。
ファイルフィルターリストは、インストールされたファイルフィルターを含んでいるでしょう。</para>
              </listitem>
            </orderedlist>
          </listitem>
        </orderedlist>
      </section>

      <section id="Filters_TestingDlg">
        <title>ファイルフィルターのテスト<indexterm>
            <primary>ファイルフィルター</primary>

            <secondary>testing</secondary>
          </indexterm><indexterm>
            <primary>ファイルフィルターのテスト</primary>
          </indexterm></title>

        <para>新しいルール作成や既存のルールの理解を補助するため、 サンプルデータに対し素早くファイルフィルターをテストするには、
テストフィルターダイアログを使用してください。 それは、フルで比較操作を走らせるより簡単です。</para>

        <para>フィルターダイアログから始めます:</para>

        <orderedlist>
          <listitem>
            <para>ファイルフィルタータブで、テストしたいファイルフィルターを選択してください。</para>
          </listitem>

          <listitem>
            <para>テストするルールを確認したい場合は、 <guibutton>編集</guibutton>をクリックしてください。
ファイルが開き、次のステップの間、内容を確認することができます。</para>
          </listitem>

          <listitem>
            <para><guibutton>テスト</guibutton>をクリックしてください。</para>
          </listitem>

          <listitem>
            <para>フィルターのテストダイアログで、テストするルールの型を選択してください:</para>

            <itemizedlist>
              <listitem>
                <para>ファイルフィルター中のファイルルール、 <guilabel>f:</guilabel>をテストするには、
<guilabel>フォルダー名</guilabel>オプションのチェックを外してください。</para>
              </listitem>

              <listitem>
                <para>フォルダールール、 <guilabel>d:</guilabel>をテストするには、
<guilabel>フォルダー名</guilabel>オプションにチェックを入れてください。</para>
              </listitem>
            </itemizedlist>
          </listitem>

          <listitem>
            <para>テスト用のテキストを入力してください。</para>

            <para>テキストは、テストするルールの型に適したものであるべきです。
例えば、<guilabel>フォルダー名</guilabel>オプションをチェックした場合、
あなたは「\temp」の様なフォルダー名を入力したいでしょう。</para>

            <para><guilabel>結果</guilabel>欄は、入力したテキストを、 次のどちらかのステータスと共に表示します:
<computeroutput>passed</computeroutput>、または、
<computeroutput>failed</computeroutput>。</para>
          </listitem>
        </orderedlist>
      </section>
    </section>

    <section id="Filters_LineFiltersTab">
      <title>行フィルタータブの使用<indexterm>
          <primary>行フィルター</primary>

          <secondary>有効にする</secondary>
        </indexterm></title>

      <para>ファイル比較用の行フィルターの設定と有効化には、このタブを使用してください。
タブは、ルールの一覧を持っています。それぞれのルールは、1つの正規表現を含みます。
ファイル比較用に、リストから複数のルールを組み合わせて適用することができます。</para>

      <section id="Filters_LineFilterCfg">
        <title>行フィルターの設定</title>

        <para>下の <guilabel>正規表現</guilabel>リストには、 いつでもルールの追加、編集、削除に使うことのできる、編集欄とボタンがあります。</para>

        <para>新しいルールを追加するには:</para>

        <orderedlist>
          <listitem>
            <para><guibutton>新規</guibutton>ボタンをクリックしてください。 カーソルが自動的に編集欄へ移動します。</para>
          </listitem>

          <listitem>
            <para><guilabel>正規表現</guilabel>リストの下にある、編集欄に式を入力してください。</para>
          </listitem>

          <listitem>
            <para><guibutton>保存</guibutton>をクリックし、リストへ式を読み込んでください。</para>
          </listitem>
        </orderedlist>

        <para>既存のルールを編集するには:</para>

        <orderedlist>
          <listitem>
            <para>行を選択し、 <guibutton>編集</guibutton>をクリックしてください。</para>
          </listitem>

          <listitem>
            <para>編集欄の式を編集してください。</para>
          </listitem>

          <listitem>
            <para>編集が完了したら、<guibutton>保存</guibutton>をクリックしてください。<guibutton></guibutton></para>
          </listitem>
        </orderedlist>

        <para>ルールを削除するには、ルールを選択(チェック)し、 <guibutton>削除</guibutton>ボタンをクリックしてください。</para>
      </section>

      <section id="Filters_LineFilterEnabling">
        <title>行フィルターの有効化と無効化<indexterm>
            <primary>行フィルター</primary>

            <secondary>利用可能なリスト</secondary>
          </indexterm></title>

        <orderedlist>
          <listitem>
            <para><guilabel>正規表現</guilabel>リストで、 適用したいフィルターにチェックを入れ、適用したくないフィルターはチェックを外すだけです。</para>
          </listitem>

          <listitem>
            <para><guilabel>行フィルターを有効にする</guilabel>オプションに チェックを入れるか、外してください。 行フィルターを有効にした場合、
<guilabel>正規表現</guilabel>リストで、現在チェックされているすべてのルールが使用されます。
行フィルターを無効にした場合、たとえそれらがチェックされていても、ルールは使用されません。</para>
          </listitem>

          <listitem>
            <para><guibutton>OK</guibutton>をクリックして、フィルターダイアログを閉じ、設定を保存してください。</para>
          </listitem>
        </orderedlist>

        <para>それらを有効にした後にファイルフィルターを適用する、いくつかの方法があります。 詳細は、 <xref
linkend="Filters_LineFilterApply" />を参照してください。</para>
      </section>
    </section>

    <section id="Filters_SubstitutionFiltersTab">
      <title>[置換フィルター] タブの使用<indexterm>
          <primary>置換フィルタ</primary>

          <secondary>有効にする</secondary>
        </indexterm></title>

        <para>TBD</para>

      <section id="Filters_SubstitutionFilterCfg">
        <title>置換フィルターの構成</title>

        <para>TBD</para>

      </section>

      <section id="Filters_SubstitutionFilterEnabling">
        <title>置換フィルタの有効化と無効化<indexterm>
            <primary>置換フィルタ</primary>

            <secondary>利用可能なリスト</secondary>
          </indexterm></title>

        <para>TBD</para>
      </section>
    </section>
  </section>

  <section id="AboutFilters_regexp">
    <title>正規表現のヘルプ<indexterm>
        <primary>正規表現</primary>

        <secondary>助けてもらう</secondary>
      </indexterm></title>

    <para>正規表現は、非常に複雑になり得ます。幸い、WinMerge
のほとんどのファイルフィルターは、このトピックの例からもわかるように、シンプルな範囲の表現です。
WinMergeと共にインストールされるフィルターファイルは、多くの役に立つ例を含んでいます。</para>

    <para>最後に、Web上には、正規表現を手助けする、これらのサイトを含むたくさんの情報源があります:</para>

    <variablelist>
      <varlistentry>
        <term>正規表現に特化した優れたサイト:</term>

        <listitem>
          <simpara><ulink
url="https://www.regular-expressions.info/">https://www.regular-expressions.info/</ulink></simpara>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>チュートリアル：</term>

        <listitem>
          <simpara><ulink
url="http://www.zvon.org/comp/r/tut-Regexp.html">http://www.zvon.org/comp/r/tut-Regexp.html</ulink></simpara>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term>PDF クイックリファレンス:</term>

        <listitem>
          <simpara><ulink
url="https://github.com/GordonMcKinney/gist-assets/raw/master/regex.pdf">
https://github.com/GordonMcKinney/gist-assets/raw/master/regex.pdf</ulink></simpara>
        </listitem>
      </varlistentry>
    </variablelist>
  </section>
</article>
