パターン
パターンとは、テキストを記述する形式的な方法です。たとえば、テキスト "32" は、2 桁を含むテキストとして記述することができます。また一方で、"12" や "00" といった 2 桁の数字を含む他のテキストも、2 桁の数字を含むテキストとして記述することができます。これは、パターン \d\d として表すことができます。このパターンは、テキストに 2 つの数字が含まれ、2 桁に限定されることを示す規則的な表記方法です (d は数字を表す記号)。この場合、「これらのテキストはこのパターンと一致する」と言うことができます。(Design Studio のパターンは Perl5 の構文に従います。)
パターンは、通常の文字と特殊記号で構成されています。特殊記号にはそれぞれ特別な意味があります。たとえば、特殊記号 "."(ドット) は任意の単一文字を表し、"a"、"b"、"1"、"2" などのすべての単一文字と照合されます。
以下の表に、最も一般的に使用される特殊記号の概要を示します。
特殊記号 |
説明 |
---|---|
. |
"a"、"1"、"/"、"?"、"." などの任意の単一文字。 |
\d |
"0"、"1" ~ "9" などの任意の 10 進数。 |
\D |
"0"、"1" ~ "9" を除いた "." に等しい、任意の非数字。 |
\s |
" " や改行などの空白文字。 |
\S |
空白 ( " " や改行など) を除いた "." に等しい、空白以外の任意の文字。 |
\w |
"a" ~ "z"、"A" ~ "Z"、"0" ~ "9" などの任意の単語文字列 (英数字)。 |
\W |
"a" ~ "z"、"A" ~ "Z"、"0" ~ "9" を除いた "." に等しい、任意の単語文字列 (英数字)。 |
例
-
パターン ".an" は、"mcan" ではなく、"can" と "man" のような "an" で終わるすべての 3 桁のテキスト長と照合されます。
-
パターン "\d\d\s\d\d" は、2 桁の数字で始まり空白を 1 つ挟んで 2 桁の数字で終わる、5 桁のテキスト長 ( "01 23" や "72 13" など。 "01 2s" は当てはまらない) と照合されます。
-
"." または "\" のような特殊文字を通常の文字として機能させたい場合は、その前に "\" (バックスラッシュ) を付けてエスケープさせることができます。"." の文字に正確に照合させたい場合は、任意の単一文字の代わりに "\." と記述します。
たとえば、パターン "m\.n\\o" は、テキスト "m.n\o" にのみ一致します。
-
以下の括弧を使って、パターンをサブパターンに整理できます。"(" および ")" 。
たとえば、パターン "abc" は、"(a)(bc)" として整理できます。
-
単一文字はすべて、サブパターンとみなされます。
たとえば、パターン "abc" では、単一文字 "a"、"b"、"c" はサブパターンとみなされます。
サブパターンは、パターン演算子を適用するときに便利です。次の表に、利用可能なパターン演算子の概要を示します。
演算子 |
説明 |
---|---|
? |
前のサブパターンまたは空のテキストに一致。 |
* |
前のサブパターンの繰り返し回数、または空のテキストに一致。 |
+ |
先行するサブパターンの 1 つ以上の繰り返しに一致。 |
{m} |
先行するサブパターンの m 回の繰り返しと正確に一致。 |
{m,n} |
先行するサブパターンの m ~ n 回 (両端を含む) の繰り返しに一致。 |
{m,} |
先行するサブパターンの m 回以上の繰り返しと正確に一致。 |
a|b |
エクスプレッション a が一致するもの、またはエクスプレッション b が一致するものに一致。 |
例
-
".*" は、"Design Studio"、"1213"、「」(空のテキスト) などの任意のテキストに一致
-
"(abc)*" は、"abca" ではなく、「」、"abc"、"abcabc"、および "abcabcabc" などのテキスト "abc" の繰り返し回数に一致
-
"(\d\d){1,2}" は、"12" や "6789" のような 2 桁または 4 桁の数字のいずれかに一致しても、"123" には一致しない
-
"(good)?bye" は、"goodbye" と "bye" に一致
-
"(good)|(bye)" は、"good" と "bye" に一致
他の特殊文字と同様に、文字の前に "\" バックスラッシュを追加して、パターン演算子に現れる特殊文字をエスケープすることができます。
サブパターンは、テキストから特定のテキスト部分を抽出するときに便利です。カッコを使ってサブパターンを作成すると、そのサブパターンに一致するテキスト部分を抽出することができます。たとえば、パターン "abc (.*) def (.*) ghi" を考えてみましょう。このパターンには、括弧でまとめられた 2 つのサブパターンがあります。このパターンをテキスト "abc 123 def 456 ghi" と照合した場合、これらのサブパターンの最初はテキスト "123" と一致し、2 番目のサブパターンはテキスト "456" と一致します。エクスプレッション (エクスプレッションを参照) では、"$1" と "$2" を記述することで、これらのサブパターンの一致を参照できます。たとえば、"X" + $1 + "Y"+ $2 + "Z" というエクスプレッションは、結果 "X123Y456Z" を生成します。これは、Design Studio で非常に重要な抽出手法です (これについては、「エクスプレッションの試行」で説明しています)。
デフォルトでは、繰り返しパターン演算子 (*, +, {...}) は、可能な限り前のパターンの繰り返し回数に一致します。演算子の後に "?" を置くことで、できるだけ繰り返し回数の少ない演算子に変換することができます。たとえば、パターン ".*(\d\d\d).*" を考えてみましょう。このパターンをテキスト "abc 123 def 456 ghi" と照合した場合、最初の * 演算子は可能な限り多くの繰り返しと照合されるため、サブパターン "(\d\d\d)" はテキストの 2 番目の数字 ("456") と一致します。パターンが ".*?(\d\d\d).*" になるように * 演算子の後に "?" を置くと、*? 演算子はできるだけ少ない繰り返し回数で照合されるため、サブパターン "(\d\d\d)" はテキストの最初の数字 ("123") と一致します。
ご自分でパターンを試行してみてください。試行を行う場合の最適な方法は、Design Studio を起動し、[タグ判定] アクションなどのパターンを入力できる位置を見つけることです。次に、パターン フィールドの右側にある [編集] ボタンをクリックして、[パターン エディター] ウィンドウを開きます。
[パターン エディター] では、パターンを入力し、[入力値] パネルのテスト入力値テキストと一致するかどうかテストできます。ウィンドウを開いたとき、Design Studio は通常、所定のステップが現在の入力ロボット状態で実行された場合に、パターンが一致するテキストにテスト入力値テキストを設定します。しかし、テスト入力値テキストを自分で編集して、他の入力でパターンを試すこともできます。パターンをテストするには、[テスト] ボタンをクリックします。照合の結果は、[出力値] パネルに表示されます。
パターン エディターの [シンボル] ボタンは、パターンに特殊記号を入力する場合にとても便利です。このボタンをクリックするとメニューが表示され、パターンに挿入するシンボルを選択できます。このようにシンボルを選択する方法であれば、特殊記号とその意味をすべて覚える必要はありません。
使用可能な特殊記号やパターンの詳細については、「パターン」を参照してください。