web-dev-qa-db-ja.com

Jmeterで正規表現を使用して複数の値を抽出する方法

Jmeterでテストを実行していますが、正規表現で抽出する必要があります。

insertar?sIws2kyXGJJA_01== 
insertar?sIws2kyXGJJA_02==

次の文字列で:

[\"EMBPAGE1_00010001\",\"**insertar?sIws2kyXGJJA_01==**\",1,100,\"%\",300,\"px\",0,\"center\",\"\",\"[\"EMBPAGE1_00010002\",\"**insertar?sIws2kyXGJJA_02==**\",1,100,\"%\",300,\"px\",0,\"center\",\"\",\"
5

スーパーシークレット演算子を使用する(否定一致N) enter image description here

UPD:G2-私の例では、各遭遇から2つのグループを抽出します。各エンカウンターはg1では「uuid」であり、g2は2番目の部分です。ここで2番目の部分が必要です。そのため、$ 2 $テンプレートとg2があります。 1つのグループでのエンカウンターの場合、ほとんどの場合、すべてのエンカウンターをg1に配置する$ 1 $テンプレートを使用します。マッチグループが1つある場合、実際には_gNで終わる必要はありません。グループ抽出後の変数をさらに理解するには、「Debug PostProcessor」を追加し、TreeViewで出力を検査します。

「Foreach」のような制御要素がグループを理解し、regexUUID_のようなプレフィックスを操作してウォークスルーできることを知っているのは素晴らしいことです。ほとんどの場合、抽出後に次に行います。

UPD2。問題の正規表現のプリミティブバージョン(insertar \?sIws2kyXGJJA_\d *)==([^ [] *)テンプレート$ 1 $$ 2 $を使用すると、g1グループの最初の部分とg2の2番目の部分があります。

1

DMCからの回答では、正規表現エクストラクタを2回追加して、一致番号(1、2)が異なる両方の値を一致/取得する必要があります。それも正しいですが、同じことを達成するためのより良いアプローチを提案しています。

別のアプローチ:

1。両方の値をキャプチャする:

テンプレートを使用して、両方の値を同時にキャプチャし、後でインデックスを使用して参照することができます。

次のスクリーンショットを確認してください。

enter image description here

ここでは、2つのグループを使用して両方の値をそれぞれ$ 1 $と$ 2 $の2つの異なるテンプレートにキャプチャしました。ここで、テンプレートは、デフォルトで正規表現で指定されたグループの順序でデータを格納します。 (参考までに、$ 2 $と$ 1 $のようにテンプレートの順序を微調整することによっても、順序を変更できます。)

ここで、図のように、2つの値をキャプチャし、テンプレートを使用して保存しています。$ 1 $(最初のグループ一致を参照)と$ 2 $(2番目のグループ一致を参照)

2。値の取得:

次に、次の構文を使用して、スクリプトでこれらの値を参照します。

$ {insert_values_gn}(nは一致番号を示します)

例えば:

$ {insert_values_g1}-最初の一致を参照します

$ {insert_values_g2} -2番目の一致を参照します

簡単にするために、「insert_values」は複数のグループを使用してキャプチャされた文字列のリストと考えることができますanduse'n '(1,2,3 etc)値を取得するためのインデックスとして。

注:テンプレートを使用すると、複数のグループを使用して任意の数の値を取得し、単一の正規表現エクストラクターを使用してインデックスを作成することでそれらを参照できます。

4

より効率的な方法があると確信していますが、これはうまくいきました:

_\*\*(.*?)\*\*.*\"\*\*(.*?)\*\*
_

enter image description here

\*\*(.*?)\*\*のみを使用することもできます。いずれにせよ両方に一致するため、正しい「一致番号」を設定してください。値の1つを渡すと、Jmeterで次のようになります。

enter image description here

マッチング番号は、最初のマッチでは1、2番目のマッチでは2である必要があります。

3
DMC