2016-04-19 15 views
2

RegExアクションでNintexワークフローを使用しています。 RegExは.NETに基づいていると私は信じています。私は、データを書く人に基づいて異なるフォーマットでそれを入力するユーザによって私に送られるいくつかのデータに対してRegExを実行する必要があります。RegExで分割して厳密に条件を抽出する

Test: A-BC12 (1,2,3,4,5,6,7,8,9); 
Test: A-DE34 (1,2,3,4, words, 5,6,7,8,9); 
Test: AFG56 (1,2,3,4 word, 5); 
STOP some extra 

私の目標はこれです。

Start the extract after Test: 
Capture the last 4 of the alpha numeric before the parenthesis 
Capture the numbers only inside the parenthesis  
Split each data based on ; 
End the whole capture when the word STOP is found. 

エンド

BC12 (1,2,3,4,5,6,7,8,9); 
DE34 (1,2,3,4,5,6,7,8,9); 
FG56 (1,2,3,4,5); 

結果、私は、データを分割し、前方参照を試してみましたが、除外と私はすべてが一緒に動作するように見えることはできませんしています。私の結果を達成するために複数のRegExを実行しなければならないなら、それで大丈夫です。

私は私の目標 (?s)(?<=^.*?Test:\s)[a-zA-Z0-9]+最初ABC12またはABC12は、保守が容易であるので、 [,;]は、データを分割を停止し、こののみキャプチャのそれぞれを達成するために、次の試してみました。しかし、Test:という単語が捕捉されます。

私は正しい方向に向かっていると感じていますが、何かが欠落しているか間違った方法で取り組んでいます。どんな助けでも大歓迎です。

答えて

2

最初のグループを省略する必要がある場合は、この正規表現を使用できます。Test:\s*A[^;]*;(.*?)STOP

こうすれば、$1とし、それを;に分割することができます。


編集:明確化により、上記解決策は廃止されました。あなたが実際に何かを探している

a. Start the extract after Test: 
b. Capture the last 4 of the alpha numeric before the parenthesis 
c. Capture the numbers only inside the parenthesis  
d. Split each data based on ; 
e. End the whole capture when the word STOP is found. 

  1. 使用Test:\s*(.*?)STOP私が直接あなたのステップに対処する新しいものを作りました。これは、ステップaeを解決します。

  2. $1とし、[A-Z0-9]{4}\s*\(([^)]*)\);を使用してください。これは、手順bdを解決します。

  3. 前の手順で$1を取得し、([0-9]+)を使用して数値を取得します。これにより、すべての数値が得られます。与えられた場合、9,10は、910の2つの一致を生成します。

あなたは、単一の行のために大文字と小文字を区別しない、sためiのように、修飾子を使用する必要があり、グローバルのためg

私はこれが最終的にあなたが探していることを望みます!

+0

これは私のためには機能しません。キャプチャは 'Test:'と最初のエントリをスキップし、その時点から括弧内に含まれる単語まですべてをキャプチャします。 RegExのオプションは 'Replace Text'、' Split'と 'Extract'です。'$ 1 'を挿入する唯一のオプションは' Replace Text'オプションです。 – JeremyA1

+0

@ JeremyA1あなたが望むものを指定してください。かっこの内容を望まないことについては何も言いませんでした。 – Laurel

+0

私は達成しようとしていることを反映するためにオリジナルの投稿を更新しました。括弧についての部分を省略して謝罪しました – JeremyA1

関連する問題