正規表現ツール

[正規表現]ツールは、正規表現構文を使用してデータの解析、一致、置換を行います。

構成プロパティ

  1. ドロップダウンリストから解析するフィールドを選択します。

  2. 正規表現を作成するコードを入力します。 ドロップダウンリストを使用しすると、式の構築が容易になりまる。 正規表現の、 完全なPerl正規表現構文を参照してください。

    大文字と小文字を区別しないチェックボックスにご注意ください。

  3. 以下で詳しく説明する出力方法(4つのオプション)を選択します。 各メソッドは異なる方法で解析されます。

置換:置換メソッドは、式#1を式#2単に置き換えます

  1. ドロップダウンリストからアイテムを選択することで置換テキスト式を作成します。 式は、式を置き換えるためにマークされたグループを識別することによって構築されます。

  2. この式を作成するためのヘルプが必要な場合、完全なブースト拡張フォーマット文字列構文を参照してください。 ドロップダウンリストを使用しすると、式の構築が容易になりまる。

トークン化:トークン化メソッドを使用すると、一致する正規表現を指定することが可能になり、文字列のその部分は別(個の列または行)に解析されます。 トークン化メソッドを使用する場合は、トークン全体に一致させる必要があります。マークされたグループがある場合は、その部分だけが返されます。

このメソッドは テキストを列にツールのように振る舞いますが、望んでいないもの(区切り文字など)で一致させるのではなく、望むものを一致させます。 トークン化は、どんなパターンのデータにもスプリットできるという点で、はるかに柔軟性があります。

トークン化関数のより具体的な使用例については、以下のトークン化セクションをご覧ください。

[トークン化]、[列にスプリット]と[行に分割]の2つのオプションがあります。

  1. プロパティをトークン化する: 新しいフィールドのルート名と作成する新しいフィールドの数を指定します。 Alteryxは、新しいフィールドのルート名に順番に番号を追加します。 (つまり、 新しいフィールドのルート名: NAMEおよび新しいフィールドの数: 3はテーブルに3つの新しいフィールド: NAME1、NAME2、NAME3が追加される結果となります)

  2. ステップ2で指定した列数の追加データがある場合に、実行する動作を指定します。 オプションには以下が含まれます:

    • 警告を伴って余分のものを削除: 余分なデータは削除されますが、「結果」ウィンドウに警告が表示されます(つまり、●正規表現(7): 値「E & E SOCCER CAMP」には出力フィールドの数に合わせるためのパーツが多すぎます)
       

    • 警告を伴わずに余分なものを削除する: 余分なデータは削除され、警告は表示されません

    • エラー: ワークフローは実行されず、「結果」ウィンドウにそのようなものと示すエラーが表示されます。(つまり、●正規表現(7): 値「E & E SOCCER CAMP」には出力フィールドの数に合わせるためのパーツが多すぎます)

解析: 解析メソッドは、式を新しいフィールドに区切って、出力フィールド名、 フィールドタイプ、サイズ、式を指定できるようにします。

  1. グループに区切られた各式に対して、[出力フィールド]ボックスに新しいフィールドが作成されます。

  2. 出力フィールド名をクリックしてフィールドの名前を変更します(デフォルトはRegExOut1、RegExOut2など)

  3. ドロップダウンリストをプルダウンして、 フィールドタイプを指定します

  4. フィールドのサイズを指定するには、[サイズ]列を入力します。

  5. 式は、上記の式と一貫して、自動的に式ボックスに表示されます。 この式は、この解析されたフィールドに何が追加されるかを示します。

一致: 一致メソッドは、式が文字列と一致するかどうかに基づいて1または0のいずれかを割り当てます。 この方法を選択するときは、 フィルタリングツールに接続して一致した結果を一致しない結果から分離します。

  1. 上記で指定した式で作成された新しいフィールドに入力します。 このフィールドには、一致を示す「1」または一致しないことを示す「0」のいずれかが追加されます。

  2. 注記: 一致しない場合にエラーをスローするチェックボックスがあります

  3. 一致したレコードを一致しないレコードから分離するには、 フィルタリングツールにダウンストリーム接続します。

トークン化メソッドを使用する

次は、正規表現ツールのトークン化メソッドの場合の3つの使用例です。

正規表現は次のとおりです。

...

結果として得られる3つのフィールドは、 123 456 789です

2番目の文字だけを元に戻したい場合は、次のようにマークします:

.(.).

結果として得られる3つのフィールドは、2 5 8です

Ctrl-Aで区切られた文字列をトークン化する正規表現は次のとおりです。

[^\cA]+

では、正規表現を分解しましょう:

[^ ...] 角括弧は、文字セット内の1文字への一致を指定します。 セットを^で開始すると、セットのどの文字にも一致しないようになります。

\ cA これは単にCtrl-A文字と一致します。

+ これは、前の1つ以上の文字と一致することを意味します。

時には、空白を保存しておきたい場合もあります。 以下のテキストを見てみましょう。

abc, ,def

この場合、2ではなく3つのフィールドが必要なため、区切り文字を一致に含める必要があります。

([^,]*) (?:,|$)

正規表現を分割する:

(...) 括弧は、式のマークされたグループを作成します。 トークン化モードでは、入力フィールドの大部分を一致させても、マークされたサブセットのみを返すことができます。 こうすることで、区切り文字を返さないようにすることができます。 マークされた式が1しかないかもしれません。

[^,] 上記の例のように、以下と異なる文字を一致させますa ,

* 前の0以上の文字に一致します。 これは、空のセットを許可するという点で最初の例と異なります。 無限の数の一致があるので、正規表現エンジンが0文字の一致に適合しないからといってここで終わらせることはできません。そのため、何かの文字で一致を終了させる必要があります。

(?:....) これはマークされていないグループです。 これは、または|を使用する場合に必要となります。

| これは、前後の文字の両方ではなく、いずれか一方の文字に一致することを指します。 これは、常にマークの付いたグループ、はマークの付かないグループで使用する必要があります。

$ 文字列の最後に一致します。 したがって(?:,|$) が一致するのはa ,または文字列の末尾までです。

別の一般的なタスクは、HTMLドキュメントを解析することです。 この例では、ホームページからHTMLリンクを解析します。 式はきわめて単純です:

<a .*?>.*?</a>

正規表現を分割する:

<a これはテキストのリテラル一致です<a

.*? .は任意の文字で、*は0以上で、?は興味深いところです。  ? を*に変更すると最短一致を行います。  これは、考えられる最短の一致に一致させることを意味します。  これがなければ、式は最初のリンクの先頭から最後のリンクの終わりまで、1つのトークンを探さないともかぎりません。

> HTMLデータでリテラルの > に一致させるだけです。

.*? 正規表現全体をまだ満足させる文字の考えられる最短の一致。

リテラル文字にすぎません。  これで一致は終わります。

これは、大きなHTMLドキュメントのすべてのリンクを一連のレコード(またはフィールド)に率いれます。

正規表現の記述の詳細については、www.regexlib.comを参照してください。 AlteryxはこのWebサイトとは提携していませんが、そこには有用なリソースとリンクが含まれています。 ただし、AlteryxはPerl 5構文(最も一般的な構文)を採用しており、すべての構文がこのサイトで指定されているわけではありません。

Alteryxはまた、(Perlと互換性のある)正規表現を相互作用的に試すために使用できる、Windows用のグラフィカルアプリケーションのRegEx Coachを推奨しています。 RegEx Coachは次のサイトからダウンロードできます。 http://weitz.de/regex-coach/