2017-08-22 38 views
0

いくつかのレコードを解析するために正規表現を使用していますが、以下のシナリオを見つけるために正規表現を構築する方法がわかりません。文字列内で最後に現れた文字列を見つけるための正規表現

例レコード: この試験列である425 = UA113456 jkjkj 425 = AB1234Xこれは、これがテスト文字列であるテストストリング795 = 12です。

要件。タグ795 = 12を検索し、タグ425の値を見つけるために検索を戻します。この場合、戻り値はAB1235Xでなければなりません。 注:複数の425 =タグのように、この例では2つありますが、795 = 12より前のタグの値が必要です。

これは私がこれまで持っていたものです。* 425 =(。*?)795 = 12しかし、私は必要なものではありません。

私は助けていただきありがとうございます。それは前後参照アサーションのサポートを前提としていても

+0

続いて、文字やスペースが続きますソリューションは動作しませんでした。 –

+0

実際の文字列を実際のタグで貼り付けています。 inの場合、解を見つけるのを助ける。 –

+0

8 = FIX.4.4 9 = 1234 35 = 8 49 = MA 56 = CATSTFF 34 = 50 52 = 20170818-20:26:06.772 453 = 5 448 = captest1uk 447 = C 452 = 448 = BEARGB21XXX 447 = B 452 = 1 448 = DLR3LEI123451234 447 = N 452 = 1 761 = 4 699 = DE0001141729 662 = 101.899 663 = 1 218 = -414.300 6707 = -0.348 –

答えて

0

と仮定すると、すべてのタグは、(\d+)=(\S+)[^=]*795=12DemoまたはDemo

(   # Capturing Group (1) 
    \d  # <digit 0-9> 
    +   # (one or more)(greedy) 
)   # End of Capturing Group (1) 
=   # "=" 
(   # Capturing Group (2) 
    \S  # <not a whitespace character> 
    +   # (one or more)(greedy) 
)   # End of Capturing Group (2) 
[^=]  # Character not in [=] Character Class 
*   # (zero or more)(greedy) 
795=12  # "795=12" 

またはあなたがしようとしたものに基づいて、これは動作します。この425=(\S+)[^=]*795=12

+0

ありがとう、ありがとうございます。私は期待していた値を返していません。 –

+0

@HarveyA。、AB1235Xはデモリンクごとにグループ#2に返されますか? –

0

を使用して、このパターンを使用して、数字、次のとおりです。

(?<=425=)\b(\w+)\b(?=[a-zA-Z\s]*795=12) 
  • \ b(\ w +)\ bは単語に一致します
  • (?私はすべてが提案試み< = 425 =)(425 =
  • によって先行?= [-ZA-Z \ S] * 795 = 12)= 12 795
+0

あなたの時間をありがとうが、私が期待していた値を返さなかった –

+0

何が返され、どんな価値がありますか? – Anthony

+0

繰り返すことができないものを繰り返す試みがあるというエラーが表示されます。例えばa * +。私はAlteryxとそのregExツールを使っています。 –

関連する問題