2011-10-20 6 views
0

Comment puis-je faire correspondre seulement le code en ligne exact et faire correspondre les deux si c'est deux fois, pas comme une seule correspondance.php preg match avec des correspondances inline

http://regexr.com?2uvul

Je veux obtenir le résultat avec:

Array ( [0] => asd [1] => asd )

pas

Array ( [0] => asdasd )

+0

Il serait utile de futur utilisateur de ce site si vous souhaitez coller l'exemple de code et les expressions que vous avez essayé dans la question ci-dessus. Utilisez le caractère back-tick (sur la touche '~') pour citer le texte ou le code ou le code de retrait de quatre espaces ou plus pour le définir à partir du reste du texte –

Répondre

2

http://regexr.com?2uvuu - utiliser l'expression:

<!--\s+IF\s+([^\s]*)\s-->([^<]*)<!--\sENDIF\s--> 

EDIT:

Considérant que ce que vous voulez faire correspondre à l'intérieur de l'instruction if "tag" pourrait avoir un espace blanc, une expression légèrement plus lent qui devrait gérer quoi que ce soit à l'intérieur de la « instruction if » devrait être comme suit (à RegExr):

/<!--\s+IF\s+(.*?)\s-->([^<]*)<!--\sENDIF\s-->/gixsm 

Si vous souhaitez ensuite être en mesure de saisir d'autres balises (ou le caractère <) à l'intérieur du résultat (si la déclaration est "true", vous voulez utiliser le (encore une fois un peu plus lent) l'expression (à RegExr):

/<!--\s+IF\s+(.*?)\s-->(.*?)<!--\sENDIF\s-->/gixsm 

FIN EDIT

+0

Qu'en est-il de asd ? –

+1

Je suis désolé, mais votre question était très incomplète, et je ne sais pas ce que vous demandez, donc je suppose que j'ai donné une réponse incomplète. Je n'ai aucune idée de ce qui pourrait apparaître dans votre "déclaration", car je ne connais pas la syntaxe. Je vais réessayer! –

+0

Salut, désolé j'ai oublié de mentionner à propos de cette syntaxe, c'est joli imbriqué. Merci pour le code parfait! :) –