Pattern構文要素の値は、関数が検索する行のシーケンスを指定します。パターン定義patternを、シンボル(Symbols構文要素で定義)、演算子、および括弧で作成します。パターン定義では、シンボルは行を表わします。シンボルをパターン演算子と組み合わせて、検索対象の行の単純または複雑なパターンを定義できます。
次のテーブルでは、基本的なパターン演算子を優先順に一覧表示し説明します。このテーブルで、AとBはSymbols構文要素で定義されたシンボルです。
演算子 | 説明 | 優先順位 |
---|---|---|
A |
Aの定義を満たす1つの行に一致します。 | 1(最優先) |
A. |
Aの定義を満たす1つの行に一致します。 | 1 |
A? |
Aの定義を満たす0または1行に一致します。 | 1 |
A* |
Aの定義を満たす0個以上の行に一致します(greedy演算子)。 | 1 |
A+ |
Aの定義を満たす1つ以上の行(greedy演算子)に一致します。 | 1 |
A.B |
最初の行がAの定義を満たし2行目がBの定義を満たす2つの行に一致します。 | 2 |
A|B |
AまたはBのいずれかの定義を満たす1つの行に一致します。 | 3 |
nPath関数はGreedyパターン マッチングを使用します。つまり、nongreedy演算子によって指定されたパターンとの一致で、可能な限り最長の一致を検索します。詳細は、nPath Greedyパターン マッチングを参照してください。
- A.B+はA.(B+)と同じです。
- A|B*はA|(B*)と同じです。
- A.B|Cは(A.B)|Cと同じです。
例:
A.(B|C)+.D?.X*.A
上記のパターン定義は、最初の行がシンボルAの定義を満たし、その後に各行がシンボルBまたはCのいずれかの定義を満たす空でない行のシーケンスが続き、さらにオプションでシンボルDの定義を満たす1行が続き、その後にシンボルXの定義を満たす行が行数を問わず続き、最後はシンボルAの定義を満たす1行で終わる、あらゆる行セットと一致します。
括弧を使用して優先順位ルールを定義できます。括弧が必須でない場合も、明確さのために括弧の使用を推奨します。
行のシーケンスが特定のシンボルに一致する行で開始または終了する必要があることを示すには、開始アンカー(^)または終了アンカー($)演算子を使用します。
演算子 | 説明 |
---|---|
^A |
パターンの先頭にのみ表示されます。行のセットがAの定義を満たす行で始まる必要があることを示します。 |
A$ |
パターンの末尾にのみ表示されます。行のセットがAの定義を満たす行で終わる必要があることを示します。 |
サブパターン演算子では、一致の中にサブパターンが必ず表示される頻度を指定できます。最小数、決まった数値、または範囲を指定できます。以下の表では、Xは、シンボルと前述のパターン演算子のいずれかで作成されるパターン定義を表わします。
演算子 | 説明 |
---|---|
(X){a} |
パターンXの出現回数aに正確に一致します。 |
(X){a,} |
a回以上のパターンXの出現回数に一致します。 |
(X){a,b} |
a回以上でb回を超えないパターンXの出現回数に一致します。 |