Edit Line-Pairing Rule

Use the controls on this sheet to edit the definition of a line-pairing rule. Please see the Pairing topic for further information about the purpose of line-pairing rules.

Description

Use this field to provide a succinct description of the line-pairing rule.

Expression

Provide the regular expression definition in this field. A summary of regular expression syntax may be found below.

The status text underneath the entry field indicates whether the provided regular expression is syntactically correct.

By default, when a line matches the regular expression, all of the matching characters will be used for line-pairing. However, it is also possible to use sub-expressions, so that only parts of the text matched by the regular expression are used to pair lines. See Use sequences of characters matching these selected sub-expressions to pair lines below for further information.

Example line

You can enter a sample line of text into this field to see which parts will be matched by the regular expression you have entered and thus be used for line-pairing.

Use sequences of characters matching these selected sub-expressions to pair lines

By default, Merge will use the entire sequence of characters that matches a regular expression to pair lines. You may, however, wish to use only part of the text that was matched.

For example, if you wished to pair C/C++ #define directives based on the identifier being defined, you could use an expression like this:

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

This expression contains a single sub-expression, which is marked by its being enclosed in parentheses. This sub-expression is the #define directive’s identifier. Now consider the following example line when used with this regular expression:

#define SOME_IDENTIFIER123 200

The sub-expression list for this example line will show two entries. The first (All) is the sequence of characters (#define SOME_IDENTIFIER123) matched by the entire regular expression (i.e. the #define and the following identifier). The second (1) is the sequence of characters (SOME_IDENTIFIER123) matched by the sub-expression. You would likely therefore check the second item in the list (1), so that lines containing #define directives are paired (or not paired) based only upon their identifiers.

In this example, these characters would be used to pair lines between files

This field displays the effect of applying the regular expression (taking into account any selected sub-expressions) to the example line you entered in the Example line field above. Only the displayed text would be considered when trying to pair a line with the same content as the example line.

正規表現の構文

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:.*\$.*$)