2010-11-10 7 views
0
************************** 
    * Ending Case(test) * 
    ************************** 
SET: Global["test_status"]=FAILED 
========================= 
= Ending Test (test) = 
========================= 

Regex qui retournera le statut, c'est-à-dire FAILED ou PASSED, à partir du texte ci-dessus.Besoin d'une regex en utilisant java

Actuellement, je suis en utilisant

.*SET: Global\\W"test_status"\\W=(.*) 

Mais il retourne

FAILED 
========================= 
= Ending Test (test) = 
========================= 

Merci à l'avance

Répondre

1

Essayez celui-ci:

^SET: Global\["test_status"\]=(.*)$ 

représenté sous forme de chaîne Java:

"^SET: Global\\[\"test_status\"\\]=(.*)$" 

EDIT: Ce modèle doit être utilisé avec Pattern.MULTILINE, mais pas Pattern.DOTALL.

+0

Cela ne résout pas le problème. – jjnguy

+0

Ah, je vois. J'ai mis à jour la réponse pouvez-vous essayer cette expression? – cdhowie

+0

Ça a l'air mieux. – jjnguy

0

Un problème avec l'utilisation de. * Est qu'il ne s'arrête pas à la fin de la ligne. Essayez quelque chose comme ceci:

^SET: Global\["test_status"\]=(.*)$ 
+0

Son ne fonctionne pas – Rites

0

Enfin, il a travaillé

.*SET: Global\\[\"test_status\"\\]=(.*)\\r\\n=.*\\r\\n= Ending .* 
+0

C'est beaucoup plus compliqué que ce qu'il doit être Utiliser mon motif avec Pattern.MULTILINE. – cdhowie

0

Vous pouvez utiliser:

"(?m)=(\\w+)\\b" 

comme argument de Pattern.compile()

Vous n Pas besoin de beaucoup de contexte dans cet exemple. Le motif est que le drapeau multi-ligne (? M) suivi d'un caractère '=' en tant que contexte et un groupe de capture (\\ w +) délimitée par un marqueur limite de mot \\ b

Utilisez la find() méthode sur la matcher et le groupe extrait 1.