条件を変更するために正規表現を使用する

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  データソースとターゲット > MapForce FlexText > FlexText と正規表現 >

条件を変更するために正規表現を使用する

切り替えコンテナと作業する場合、 (次を参照: 切り替え)、正規表現 の一致が含まれる場合、テキストフラグメントをリダイレクトするために、「切り替え」 コンテナ内で条件を任意で作成することができます。 このような場合は、 C++ が ターゲット 変換言語として設定されている場合を除き、テキストの始めと終わりで一致が検索されるように、 キャレット ( ^ ) と ドル記号 ( $ ) 文字を使用することができます。  (C++内で キャレットと ドル記号 文字は、テキスト全体の始め、または、終わりではなく、行の始め、または、終わりとして解釈されます)。

 

 

条件を変更するために正規表現を使用する:

1.(コンテナの右上の角をクリックし、 「切り替え」をクリックして、)コンテナ 型を切り替えとして定義します
2.「条件を追加する」 ( btn_add_switch_condtion ) ボタンをクリックして、新しい条件を追加します。
3.条件 型をコンテンツは正規表現 の一致を含む」 に設定します隣接した テキストボックス内に正規表現を入力します。

FlexTextRegEx04

 

サンプル

次に示されるデータベース ログファイルからデータをマップすると仮定します(このファイルを次のパスで見つけることができます: <マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\Tutorial\SampleDatabaseLog.txt) 。

 

Action 18:11:51: INSTALL.

Action start 18:11:51: INSTALL.

Action 18:11:51: WindowsFolder.68B7C6D9_1DF2_54C1_FF1F_C8B3B9A1E18E.

Action start 18:11:51: WindowsFolder.68B7C6D9_1DF2_54C1_FF1F_C8B3B9A1E18E.

Action ended 18:11:51: WindowsFolder.68B7C6D9_1DF2_54C1_FF1F_C8B3B9A1E18E. Return value 1.

Action 18:11:51: SystemFolder.68B7C6D9_1DF2_54C1_FF1F_C8B3B9A1E18E.

Action start 18:11:51: SystemFolder.68B7C6D9_1DF2_54C1_FF1F_C8B3B9A1E18E.

Action ended 18:11:51: SystemFolder.68B7C6D9_1DF2_54C1_FF1F_C8B3B9A1E18E. Return value 0.

Action 18:11:51: WindowsFolder.9BAE13A2_E7AF_D6C3_FF1F_C8B3B9A1E18E.

Action start 18:11:51: WindowsFolder.9BAE13A2_E7AF_D6C3_FF1F_C8B3B9A1E18E.

Action ended 18:11:51: WindowsFolder.9BAE13A2_E7AF_D6C3_FF1F_C8B3B9A1E18E. Return value 0.

Action 18:11:51: SystemFolder.9BAE13A2_E7AF_D6C3_FF1F_C8B3B9A1E18E.

Action start 18:11:51: SystemFolder.9BAE13A2_E7AF_D6C3_FF1F_C8B3B9A1E18E.

Action ended 18:11:51: SystemFolder.9BAE13A2_E7AF_D6C3_FF1F_C8B3B9A1E18E. Return value 1.

Action 18:11:51: WindowsFolder.63E949F6_03BC_5C40_FF1F_C8B3B9A1E18E.

Action start 18:11:51: WindowsFolder.63E949F6_03BC_5C40_FF1F_C8B3B9A1E18E.

Action ended 18:11:51: WindowsFolder.63E949F6_03BC_5C40_FF1F_C8B3B9A1E18E. Return value 1.

 

目標は以下のとおりです:

 

1.戻り値が存在する箇所のすべての行を集めてリストにします。値 「戻り値 1」 または 値 「戻り値 0」、または、 数値として表示される 他の 戻り値 を含む行をリストは含みます。
2.テキストが値 「Action start」を含む箇所のすべての行を他のリストに集めます。

 

この目的を達成するために、繰り返される分割 コンテナを使用して、テキストを個別の行に分割します。この後、 切り替え コンテナを使用して、各行を必要とされるようにリダイレクトします。具体的には、 切り替え コンテナ は、次に表示されるように 3つの条件から構成されています:

 

1.出力 A が 値 「Action started」を含む場合、現在の行がリダイレクトされます。型 「Content starts with」の条件を使用して、そのような行を検索し、 「Action started」 を値として入力します。
2.出力 B が 戻り値を含む場合、現在の行がリダイレクトされます。 正規表現 戻り値 [0-9]\. を使用してこのような行を検索することができます。 この正規表現は、行が単一の数字と終止符が後に続く テキスト 「戻り値」を含む場合一致を返します。  終止符がメタ文字ではなく通常の文字として扱われるように、終止符の前のバックスラッシュ ( \ ) が エスケープ文字としての役割を果たします。
3.行が上の条件を満たさない場合、 現在の行を 出力 C (<default>) にリダイレクトします。

 

 

上のタスクを実行する FlexText テンプレートの作成:

1.「挿入」 メニューから、「テキスト ファイル」をクリックします。

Dlg_InsertTextComponent

2.「サンプルファイルに基づき新しい構造タイをグラフィカルにデザイン ...」 ボタンをクリックし、  FlexText .mft テンプレートを選択するディレクトリに保存します。
3.テキスト ファイルを開くようにプロンプトされると、 <マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\Tutorial\SampleDatabaseLog.txt ファイルを参照してください。

FlexTextRegEx06

4.出力コンテナの右上の角をクリックして、 繰り返される分割を選択します。 分割文字としてリターンキーを使用しているため、 区切られた (フロート) モードを選択し、 <CR><LF> をセパレーターとして選択します。 (各行に1つの)17件のブロックにより構成されるこれにより新しい出力 コンテナが作成されます。

FlexTextSwitchByRegEx02

5.新しい出力コンテナの右上の角をクリックして、 切り替えを選択します。 FlexText は、コンテナのコンテンツを置換えとして扱います。下に表示されるように、 1つの <default> 変更条件が自動的に作成されます。 この条件は、他の条件を満たさないのテキストを新しいコンテナにリダイレクトします。  この段階では、他の条件は定義されていません。 ですから、すべてのテキストは、現在 <default> 出力にリダイレクトされています。

FlexTextSwitchByRegEx03

6.「条件の追加」 ( btn_add_switch_condtion ) ボタンをクリックして、下に示されるように 値 「Action start」を持つ型 「Content starts with」  条件 を追加します。  この条件 は、 「Action start」から開始するテキストを新しいコンテナにリダイレクトします。

FlexTextSwitchByRegEx04

 

7.条件の追加 ( btn_add_switch_condtion ) ボタンをクリックして、 戻り値 [0-9]\. を持つ型 コンテンツは正規表現 の一致を含む」の条件を追加します。 17 件中5番目のブロックへ移動する場合、ブロックには正規表現のための一致が含まれるため、この条件は、ブロックを新しいコンテナにリダイレクトされます。

FlexTextSwitchByRegEx05

条件をベースにした異なる出力へテキストをリダイレクトするために、切り替え コンテナが構成されました。 3つの切り替え条件と3つの可能な 出力 ( 各条件に対してそれぞれ1つの出力)が存在します。 このチュートリアルの残りのステップは、個別のテキストファイルにそれぞれの出力を書き込む方法について説明しています。

 

8.出力 コンテナの右上の角をクリックして、 「値として保管」 を選択します。更に、各出力のタイトルバーをダブルクリックし、 名前を入力します: 出力 A、 出力 B、出力 C

FlexTextSwitchByRegEx06

9.FlexText テンプレートを保存して閉じます。

 

必要とされる FlexText テンプレートが作成されました。次のチュートリアルファイルを開き、作業することにより、どのようにこのテンプレートが作動するかを確認することができます : <マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\Tutorial\FlexTextSwitchByRegEx.mfd

FlexTextSwitchByRegEx07

FlexTextSwitchByRegEx.mfd

スクリーンショット内で表示されている FlexTextSwitchByRegEx.mfd マッピングは、テキストデータを <マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\Tutorial\SampleDatabaseLog.txt ファイルから読み取り、3つの個別の テキストファイルに変換します: 出力 A、 出力 B、と 出力 C。 各ターゲット テキストファイルには、 FlexText テンプレートで以前に定義された 3つの条件の1つを満たす行のみが含まれます。特別のターゲット コンポーネントの出力を確認するには、, コンポーネントの右上の角のコンポーネントのプレビュー ( preview ) ボタンをクリックして、 そして 出力 タブをクリックします。


(C) 2019 Altova GmbH