On this page | |
Since | 17.5 |
このノードは、単純なパターン置換言語または多能な正規表現のどちらを使用するのか選択することができます。 分割文字で構造化された文字列には、単純なパターンを使用した方が記述が簡単で理解しやすいです。
単純なパターン言語 ¶
このノードは、非常に単純なパターン言語に対応しており、名前付き“キャプチャ”グループとリテラル文字(そのままの文字)を交互に使用します。 キャプチャグループの文字列はアトリビュートに割り当てられます。これは、区切り文字を使った通常の構造体でファイル名を付けている場合に、そのファイル名から情報を解析するのに役立ちます。
例えば、“ソース”ファイル名を以下の形式で名前を付けたとします:
shot_a.simcache.1.005.bgeo.sc
以下のパターンを使用すれば、別々の部分をアトリビュートとして解析することができます:
{shot}.{}.{wedgenum}.{frame}.bgeo.sc
(波括弧の中を空っぽにすると、その部分はアトリビュートに割り当てられません。)
-
このパターンでは、波括弧(
{name}
)は以下のパターンのリテラル文字に合致します。-
波括弧の中が空っぽであれば、マッチした文字列は破棄されます。
-
波括弧の中に名前が入っていれば、そこにマッチした文字列がその名前のアトリビュートに割り当てられます。例えば、
{shot}
で“キャプチャ”されたソース文字列の部分はshot
アトリビュートに割り当てられます。 -
Infer Attribute Type を有効にすると、このノードは、合致した文字列に基づいてアトリビュートタイプを推測します(それが整数文字列であれば、そのアトリビュートタイプは整数に、浮動小数点文字列であれば、浮動小数点に、それ以外は文字列になります)。
{name:type}
を使用することで、アトリビュートタイプを明示的に指定することができます。例えば、{shot:string}
,{frame:int}
,{time:float}
です。
-
-
パターンの最後の波括弧は、ソース文字列の最後にマッチします。
-
波括弧の外では、パターン内の文字は、ソース文字列の文字にそのまま合致します。
-
波括弧は“欲張り”ではありません…これは遠くの文字列にマッチさせるのが良い場合でも、次のリテラル文字以前のところまでマッチします(つまり、最長マッチしません)。
例えば、
day.01.csv
に対して{name}.csv
パターンを使用する時に、{name}
にはday.01
をキャプチャしてほしいわけですが、実際にはday
のみがキャプチャされます(このパターンは次のリテラル文字、ここではピリオドまでをキャプチャします)。 このパターンは、ピリオドの後の文字は01
ではなくcsv
であることを期待しているので、失敗に終わります。 -
全 パターンは、(接頭辞のみではなく)ソース文字列にマッチしなければなりません。
-
全パターンがマッチしなかった場合、そのパターン内のアトリビュートは何も設定されません。
正規表現 ¶
非常に強力/柔軟な文字列置換を行ないたいのであれば、代わりに正規表現を使用することができます。 このノードは、Pythonの正規表現構文を使用します。
-
正規表現を使用すると、暗黙的に Infer Attribute Type が有効になります。
パラメータ ¶
Generate When
このノードがワークアイテムを生成するタイミングを決めます。 このノードがどの生成モードを必須にしているのか、もしくは、ワークアイテムを動的に生成させる必要があるのかどうか分からないのであれば、通常では、これを“Automatic”のままに設定してください。
All Upstream Items are Generated
このノードは、すべての入力ノードが自身のワークアイテムを生成した時にワークアイテムを生成します。
All Upstream Items are Cooked
このノードは、すべての入力ノードが自身のワークアイテムをクックした時にワークアイテムを生成します。
Each Upstream Item is Cooked
このノードは、入力ノード内のワークアイテムがクックされる度にワークアイテムを生成します。
Automatic
入力ノードの生成モードに基づいて生成モードが選択されます。 入力ノードのどれかがその入力のクック時にワークアイテムが生成されている場合、このノードには Each Upstream Item is Cooked が設定されます。 そうでない場合、 All Upstream Items are Generated が設定されます。
Source String
解析したいデータを含んだ文字列。
通常では、ここにはアトリビュートから文字列を取得するエクスプレッションを指定します。
これは文字列パラメータなので、エクスプレッションをバッククォートで閉じる必要があります。例: `@name`
Operation
ソース文字列に対して実行するオペレーションを決定します。 Match by String は、パターンを使って Source String からコンポーネントを抽出し、それらのコンポーネントをアトリビュートとして保存します。 Split by Delimiter は、セカンダリ文字列に基づいてソース文字列を分割し、その結果のサブ文字列をアトリビュートとして保存します。
Match by Pattern ¶
Pattern Type
Pattern
Source String からアトリビュートを抽出する際に使用するパターン。 この言語は、 Use Custom Regex チェックボックスで制御します。 このチェックボックスを無効にすると、このパラメータは単純なパターン置換言語(上記参照)を使用します。 このチェックボックスを有効にすると、このパラメータは正規表現を使用します。
Infer Attribute Type
これを有効にすると、キャプチャパターンのタイプ(例えば、{shotnum:int}
)が明示的に指定されていなかった場合、このノードは、合致した文字列の内容に基づいてアトリビュートのタイプを推測します
(それが整数文字列であれば、そのアトリビュートタイプは整数に、浮動小数点文字列であれば、浮動小数点に、それ以外は文字列になります)。
Create Items With No Matches
デフォルトでは、このノードは、パターンに合致した入力のワークアイテムのみから新しいワークアイテムを生成します。 これを有効にすると、合致しなくてもワークアイテムが渡されます。
Split by Delimiter ¶
Delimiter Type
Source String を区切る際に使用する区切りのタイプを指定します。 String を使用すると、 Delimiter フィールドのそのままの内容に基づいてソース文字列を分割します。 Character Set は、個々の区切り文字に基づいて分割します。 Regular Expression は、 Delimiter を独自の正規表現として解釈します。
Delimiter
ソース文字列を分割する時に使用する区切り文字。
Store Result As
分割した文字列を保存する方法。それぞれのコンポーネントを、単一ワークアイテム上に文字列配列アトリビュートとして保存したり、コンポーネント毎に1個のワークアイテムに分割することができます。
Split Attribute
各ワークアイテム上に生成される Source String の分割コンポーネントを含んだアトリビュートの名前。 このパラメータを無効にすると、アトリビュートは生成されません。
Count Attribute
各ワークアイテム上に生成される Source String の分割コンポーネントの合計数を含んだアトリビュートの名前。 このパラメータを無効にすると、アトリビュートは生成されません。
Index Attribute
Store Result As が Separate Work Items に設定されている場合、このパラメータは、ワークアイテム上に生成される分割コンポーネントリストの位置を示したアトリビュートの名前を決めます。 このパラメータを無効にすると、アトリビュートは生成されません。
Trim Whitespace
このトグルを有効にすると、文字列を分割した後にそれらのコンポーネントの先頭と後尾の空白を除去します。
Examples ¶
RegexPattern Example for Attribute from String TOP node
このサンプルでは、正規表現または区切り文字を使用してワークアイテムアトリビュートを作成する方法を説明しています。
SimplePattern Example for Attribute from String TOP node
このサンプルでは、単純なパターンマッチング構文を使用して文字列データからワークアイテムアトリビュートを作成する方法を説明しています。
See also |