2017-09-27 2 views
2

CECI EST MON CODE HTML.Expression régulière pour la liste déroulante

<select name="account.languagePreference"><option value="english">english</option> 
<option value="japanese">japanese</option></select> 

<select name="account.favouriteCategoryId"><option value="FISH">FISH</option> 
<option value="DOGS">DOGS</option> 
<option value="REPTILES">REPTILES</option> 
<option value="CATS">CATS</option> 
<option value="BIRDS">BIRDS</option></select> 

Question: - Je veux Expression régulière pour la deuxième liste déroulante (réponse devrait être comme celui-ci comme mention ci-dessous)

Match[][]=FISH 
Match[][]=DOGS 
Match[][]=REPTILES 
Match[][]=CATS 
Match[][]=BIRDS 

s'il vous plaît aidez-moi je ne suis pas en mesure d'extraire l'appariement complet.

j'ai utilisé regex comme

<select name="account.favouriteCategoryId">.+|\s+<option value="(.*?)">.*?</option>.+|\s+</select> 

et obtenir o/p comme

Match count: 6 
Match[1][0]= 
<option value="japanese">japanese</option></select></td> 
Match[1][1]=japanese 
    Match[2][0]=<select name="account.favouriteCategoryId"><option value="FISH">FISH</option> 
Match[2][1]=null 
Match[3][0]= 
<option value="DOGS">DOGS</option> 
Match[3][1]=DOGS  
Match[4][0]= 
<option value="REPTILES">REPTILES</option> 
Match[4][1]=REPTILES 
Match[5][0]= 
<option value="CATS">CATS</option> 
Match[5][1]=CATS 
Match[6][0]= 
<option value="BIRDS">BIRDS</option></select></td> 
    Match[6][1]=BIRDS 

Mais je veux que la mention sur le dessus (seules les valeurs de seconde liste déroulante)

grâce

+0

Qu'est-ce que regex a à faire avec une liste déroulante? Ce n'est pas clair pour moi. –

+0

En fait, je fais des tests de charge en utilisant jmeter donc j'ai besoin de ces valeurs pour mettre en requête HTTP supplémentaire dans jmeter. –

+0

Pensez à utiliser un analyseur HTML ici au lieu d'une expression rationnelle pure. –

Répondre

3

Utilisez le post-processeur CSS/JQuery Extractor avec les éléments suivants:

Reference Name: category (the variable) 
CSS/Jquery expression: select[name=account.favouriteCategoryId]> option 

Match No. -1 (return all options) 

Vous obtiendrez les variables:

category_1=FISH 
category_2=DOGS 
category_3=REPTILES 
category_4=CATS 
category_5=BIRDS 

Vous pouvez le faire dans Extractor expression régulière en utilisant:

Regular Expression: favouriteCategoryId">(([\S\s]*)<option value="([^"]+)*">(\w+)<\/option>([ \s\t\n]+)([\S\s]*)+) 

Match No: -1 (to get all) 
+0

merci, il fonctionne, mais j'ai besoin d'expression régulière parce que je dois utiliser extracteur regex. c'est possible? –

+0

add Solution Expression régulière – user7294900

3

It is not recommended to use regular expressions for parsing HTML, je suggère d'aller pour XPath Extractor à la place.

  1. Ajouter XPath Extractor comme un enfant de la demande qui retourne ce qui précède HTML
  2. Configurer comme suit:

    • Nom de référence: quelque chose de significatif, à savoir option
    • expression XPath: //select[@name='account.favouriteCategoryId']/option/@value
    • Si la réponse n'est pas conforme à XTML/HTML, vérifier Use Tidy case

Démo:

XPath Extractor Demo

Références:

+0

Merci Dmitri de travailler pour moi mais est-il possible d'utiliser pure regex? –

+0

La regex pure n'est pas l'outil approprié pour ce travail, car votre contenu HTML est imbriqué. Au lieu de cela, utilisez un analyseur. –