2013-08-29 5 views
0
correspondant

J'ai deux cordesObtenez groupe regexp seulement si

"#string1" (1111) {string2} 
"#string1" (1111) 

Je voudrais écrire regex qui correspondrait à trois groupes. Pour la première chaîne:

1 => #string1 
2 => 1111 
3 => string2 

et pour la deuxième chaîne

1 => #string1 
2 => 1111 
3 => 

Le problème est que je ne peux pas comprendre comment produire les trois groupes, mais faire le troisième vide si la chaîne ne contient pas accolades. Je peux soit faire correspondre les trois groupes pour la première chaîne et aucun pour la seconde ou correspondre aux deux premiers groupes pour les deux chaînes.

À quoi mon image devrait ressembler?

+0

Toute langue spécifique? –

+0

** Montrez-nous ce que vous avez essayé jusqu'ici. ** Ne le décrivez pas, mais modifiez la question et collez le code actuel. Alors dites-nous ce qui n'a pas fonctionné. Qu'est-il arrivé quand vous l'avez essayé? Avez-vous obtenu des résultats incorrects? Avez-vous obtenu des résultats * non *? Si les résultats étaient incorrects, qu'est-ce qui les rendait incorrects? Qu'attendiez-vous à la place? Avez-vous obtenu * des * résultats corrects? Si oui, qu'étaient-ils? Ne nous fais pas deviner. –

Répondre

3

Essayez avec:

^"([^"]*)" \(([^)]*)\)(?: \{([^}]*)\})?$ 
+0

exactement ce dont j'avais besoin, merci :) – kasztelan

Questions connexes