行ペアリング ルールの編集

このウィンドウのコントロールを使用して行ペアリング ルールの定義を編集します。行ペアリング ルールの目的の詳細については、行ペアリングを参照してください。

説明

このフィールドでは、行ペアリング ルールの簡潔な説明を提供します。

正規表現

このフィールドには正規表現の定義を入力します。正規表現の構文の概要はページ下部にあります。

この入力フィールドの下にある状態テキストは、提供された正規表現の構文が正しいかどうかを示します。

デフォルトでは、行が正規表現と一致した場合、一致するすべての文字が行ペアリングに使用されます。ただし、サブ式を使用することもできるため正規表現と一致したテキストの一部のみを使用して行をペアリングできます。詳細については、下記の「以下で選択されているサブ式と一致する一連の文字を使用して行をペアリングします」を参照してください。

行の例

このフィールドにサンプル行のテキストを入力すると、どの部分が正規表現と一致し、行のペアリングに使用されることになるのかを確認することができます。

以下で選択されているサブ式と一致する一連の文字を使用して行をペアリングします

デフォルトでは、Merge は正規表現に一致した一連の文字全体を使用して行のペアリングを行います。しかし、一致したテキストの一部のみを使用したい場合もあります。

たとえば、定義された識別子に基づいて C/C++ の #define ディレクティブをペアリングしたい場合には、次のような正規表現を使用できます。

^\s*#define\s+([[:alpha:]_][[:digit:][:alpha:]_]*)

この正規表現には 1 つのサブ式が含まれています。サブ式はかっこで囲むことによって示されます。このサブ式は #define ディレクティブの識別子です。この正規表現を次の行の例で使用した場合を考えてみましょう。

#define SOME_IDENTIFIER123 200

この行の例のサブ式のリストには 2 つのエントリが表示されます。1 番目(All)は正規表現と一致する一連の文字(#define SOME_IDENTIFIER123)です(つまり、#define と次に続く識別子です)。2 番目(1)はサブ式と一致する一連の文字(SOME_IDENTIFIER123)です。結果として、リストの 2 番目の項目(1)をチェックすることになり、#define ディレクティブを含んでいる行は、その識別子にのみ基づいてペアリング(またはペアリング解除)されます。

この例では、次の文字を使用してファイル間で行のペアリングが行われます

このフィールドには、上の行の例フィールドに入力したサンプル行に正規表現を(選択したサブ式を考慮に入れて)適用した結果が表示されます。行の例と同じ内容を含む行をペアリングする場合には、ここに表示されたテキストのみが考慮されます。

正規表現の構文

Araxis Merge で使用する正規表現の構文は、UNIX オペレーティング システムの多くのアプリケーションで使用されるものと同じです。正規表現を使用して、テキスト内で文字のシーケンスを検索できます。正規表現は、文字どおりに一致する単純なテキストと、特定の意味を持つ特殊文字から成ります。

以下に正規表現の例を挙げます。詳細については、正規表現のリファレンスを参照してください。

単純一致

apple という語を含む行に一致させる場合

apple

apple という語のみを含む行に一致させる場合

^apple$

空白に一致

完全に空、または空白とタブ文字のみを含む行に一致させる場合

^[ \t]*$

説明:

  • ^ は行の先頭に一致します。
  • [ \t]* はゼロまたは 1 個以上の空白またはタブ(\t)文字に一致します。
  • $ は行の終わりに一致します。

C++ コメントに一致

C++ スタイルのコメント(// に続けて行の終わりまで任意の文字が並ぶ)のみを含む行に一致させる場合は、次の式が使用できます。

^[ \t]*//.*$

説明:

  • ^ は行の先頭に一致します。
  • [ \t]* はゼロまたは 1 個以上の空白またはタブ(\t)文字に一致します。
  • // は連続する 2 つの / 文字に一致します。
  • .* はゼロまたは 1 個以上の任意の文字に一致します。
  • $ は行の終わりに一致します。

ソース コードの制御キーワードに一致

いくつかのバージョン管理製品では、テキスト ファイルに特殊なキーワードを挿入することができます。たとえば、Subversion では、$Date$ というテキストを展開して最終チェックインの日付と時刻を含めるようにします。異なるリビジョンのファイルを比較する場合、このようなキーワードを含む行はほとんどの場合一致しないので、無視することができます。C++ コメント行に出現する Date キーワードを無視する式は次のようになります。

^[ \t]*//.*\$Date:.*\$.*$

説明:

  • ^ は行の先頭に一致します。
  • [ \t]* はゼロまたは 1 個以上の空白またはタブ(\t)文字に一致します。
  • // は連続する 2 つの / 文字に一致します。
  • .* はゼロまたは 1 個以上の任意の文字に一致します。
  • \$ はファイルの終わりではなく、文字 $ に一致します。\ を文字の前に置くと、その文字はリテラルとして扱われます。正規表現として持っていた特別な意味はなくなります。
  • Date:Date: と一致します。
  • .* はゼロまたは 1 個以上の任意の文字に一致します。
  • \$ はリテラル文字 $ に一致します。
  • .* はゼロまたは 1 個以上の任意の文字に一致します。
  • $ は行の終わりに一致します。

関連する式:

  • ^[ \t]*//.*\$Archive:.*\$.*$
  • ^[ \t]*//.*\$Author:.*\$.*$
  • ^[ \t]*//.*\$Header:.*\$.*$
  • ^[ \t]*//.*\$JustDate:.*\$.*$
  • ^[ \t]*//.*\$Modtime:.*\$.*$
  • ^[ \t]*//.*\$Revision:.*\$.*$
  • ^[ \t]*//.*\$Workfile:.*\$.*$

式の結合

式によっては、丸かっこ ()| 文字を使用して 1 つに結合できるものがあります。

(apple|^pear$)

説明:

  • ( は式のグループを開始します。
  • appleapple という語を含む行に一致します。
  • | は、前の式(apple)または次の式(^pear$)との一致を含む行に一致します。
  • ^pear$pear という語のみから成る行に一致します。
  • ) はグループを終了します。

この構文を使用すると以下のような大きな式を構成することができます。

^[ \t]*//.*\$(Date|Archive|Author|Header|JustDate|Modtime|Revision|Workfile):.*\$.*$

ほとんどの場合、式をできる限り短くした方が比較のパフォーマンスは良くなります。上の例は、次の例より著しくパフォーマンスが良くなります。

(^[ \t]*//.*\$Date:.*\$.*$)|
(^[ \t]*//.*\$Archive:.*\$.*$)|
(^[ \t]*//.*\$Author:.*\$.*$)|
(^[ \t]*//.*\$Header:.*\$.*$)|
(^[ \t]*//.*\$JustDate:.*\$.*$)|
(^[ \t]*//.*\$Modtime:.*\$.*$)|
(^[ \t]*//.*\$Revision:.*\$.*$)|
(^[ \t]*//.*\$Workfile:.*\$.*$)