On this page |
このノードは、単純なパターン置換言語または多能な正規表現のどちらを使用するのか選択することができます。 分割文字で構造化された文字列には、単純なパターンを使用した方が記述が簡単で理解しやすいです。
単純なパターン言語
このノードは、非常に単純なパターン言語に対応しており、名前付き"キャプチャ"グループとリテラル文字(そのままの文字)を交互に使用します。 キャプチャグループの文字列はアトリビュートに割り当てられます。これは、区切り文字を使った通常の構造体でファイル名を付けている場合に、そのファイル名から情報を解析するのに役立ちます。
例えば、"ソース"ファイル名を以下の形式で名前を付けたとします:
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 が有効になります。
パラメータ
Work Item Generation
このノードが静的または動的なワークアイテムのどちらを生成するかどうか。 このノードのワークアイテムが静的に計算可能かどうか、もしくは、動的に生成させる必要があるかどうか分からないのであれば、通常では、これを"Automatic"のままに設定してください。
Dynamic
このノードが常に動的なワークアイテムを生成します。つまり、上流のワークアイテムが判明するまで待機し、その上流のワークアイテムから新しいワークアイテムを生成します。
Static
このノードが常に静的なワークアイテムを生成します。つまり、ネットワークを実行する前にパラメータ(と上流の静的なワークアイテム)に基づいて必要だと思われるだけの数のワークアイテムを生成します。
Automatic
入力が静的(静的なプロセッサ、静的な入力のみを使ったパーティショナー、マッパー)な場合、このノードは静的なワークアイテムを生成し、そうでない場合、動的なワークアイテムを生成します。
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個のワークアイテムに分割することができます。
Trim Whitespace
このトグルを有効にすると、文字列を分割した後にそれらのコンポーネントの先頭と後尾の空白を除去します。
Examples
example_top_attributefromstring Example for Attribute from String TOP node
このサンプルでは、上流のワークアイテムの文字列アトリビュートから、ワークアイテムのアトリビュートを作成する方法について説明しています。
See also |