web-dev-qa-db-fra.com

Comment extraire plusieurs valeurs avec une expression régulière dans Jmeter

Je fais des tests avec jmeter et j'ai besoin d'extraire avec une expression régulière:

insertar?sIws2kyXGJJA_01== 
insertar?sIws2kyXGJJA_02==

dans la chaîne suivante:

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

Utiliser un opérateur super secret (résultat négatif N)  enter image description here

UPD: G2 - c’est dans mon exemple que j’extrais deux groupes de chaque rencontre. Chaque rencontre est "uuid" en g1 et g2 est la deuxième partie, j’ai besoin de la deuxième partie ici. C’est pourquoi $ 2 $ template et g2. Si vous rencontrez dans un groupe, vous utiliserez très probablement le modèle $ 1 $ qui placera toutes les rencontres dans g1. Si vous avez un groupe de correspondance, vous n'avez pas réellement besoin de _gN se terminant du tout. Pour comprendre plus les variables après l'extraction du groupe ajouter un "Debug PostProcessor" et examiner la sortie dans TreeView.

Les deux gentils savent que des éléments de contrôle tels que "Pour chaque" comprennent les groupes et peuvent fonctionner avec un préfixe tel que regexUUID_ et passer à travers. Dans la plupart des cas, c'est ce que vous faites après l'extraction. 

UPD2. version primitive de l'expression rationnelle en question (insertar \? sIws2kyXGJJA_\d *) == ([^ [] *) avec le modèle $ 1 $$ 2 $ vous aurez les premières parties du groupe g1 et les deuxièmes parties en g2 

1

Dans la réponse donnée par DMC, vous devez ajouter un extracteur d’expressions régulières TWICE afin de faire correspondre/récupérer les deux valeurs avec un numéro de correspondance différent (1, 2). Bien que cela soit également correct, il suggère une meilleure approche pour atteindre le même objectif.

Une autre approche:

1. Capturez les deux valeurs:

Vous pouvez utiliser Modèle pour capturer les deux valeurs en même temps , et plus tard, référez-vous à l'aide de l'indexation.

Veuillez vérifier la capture d'écran suivante:

 enter image description here

Ici, nous avons capturé les deux valeurs en utilisant deux groupes dans deux modèles différents, respectivement $ 1 $ et $ 2 $. Ici, les modèles stockent les données dans l'ordre des groupes spécifiés par défaut dans les expressions régulières. (Pour votre information, vous pouvez également modifier l’ordre en modifiant légèrement l’ordre des modèles tels que $ 2 $, puis $ 1 $.)

Maintenant, comme dans le diagramme, nous capturons deux valeurs et les stockons à l'aide de modèles: $ 1 $ (fait référence à la correspondance du premier groupe) et $ 2 $ (fait référence à la correspondance du deuxième groupe)

2. Récupérer des valeurs:

Maintenant, référez-vous à ces valeurs dans votre script en utilisant la syntaxe suivante:

$ {insertion_values_gn} (n correspond au numéro de correspondance)

par exemple:

$ {insertion_values_g1} - fait référence à la première correspondance

$ {insertion_values_g2} - fait référence à la deuxième correspondance

Pour simplifier les choses, vous pouvez penser à "valeurs_insertion" en tant que liste de chaînes capturées à l'aide de plusieurs groupes et utilisez 'n' (1, 2, 3, etc.) comme index pour récupérer les valeurs.

Remarque: à l'aide de modèles, vous pouvez extraire n'importe quel nombre de valeurs à l'aide de plusieurs groupes. Vous pouvez y faire référence par index, à l'aide d'un seul extracteur d'expression régulière.

4
Naveen Kumar R B

Je suis sûr qu'il existe un moyen plus efficace mais cela a fonctionné:

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

 enter image description here

Vous pouvez également utiliser uniquement \*\*(.*?)\*\* De toute façon, les deux seront concordants. Veillez donc à définir le bon "Correspondant". dans Jmeter si vous passez une des valeurs:

 enter image description here

Le numéro correspondant devrait être 1 pour le premier et 2 pour le second, je crois.

3
DMC