2010-12-23 4 views
1

Nous avons développé une application flash avec un éditeur WYSIWYG en backend. Nous devons présenter plus de fonctionnalités dans l'éditeur de sorte que nous avons décidé de mettre des balises personnalisées < commencer plus> ... </fin plus> dans notre WYSIWYG.PCRE Expression régulière: Chaîne ne contenant pas

Tous HTML est analysé et converti en XML, mais seul problème est que nous devons obtenir le début plus/fin plus de balises pour les convertir à disparaître sur mesure des effets pour afficher plus de contenu sur un poste à l'intérieur de flash.

En bref, voici un exemple de sortie XML.

Some text outside <start more> some text inside</end more> 
some other text <start more>1 and some random stuff <start more>2 and 
thing </end more>2 and random stuff </end more> 

Expression régulière pour obtenir commencer de plus en plus fin

/(<start more>){1,1}(.+?)(<end more>)/ 

cette capture d'expression d'abord < commencer plus> et la première < fin plus> dans la chaîne. J'ai essayé de faire l'assertion de lookahead négative pour obtenir seulement la plupart des étiquettes. mais ne fonctionne pas.

espérons que cela a du sens. Faites-moi savoir si je ne pouvais pas expliquer le problème.

Répondre

3

Vous devriez travailler cela dans votre analyseur, ce que vous avez dit que vous avez déjà.
Si vous remplacez <start more></end more> par une paire valide, par exemple <more> </more>, tout analyseur HTML devrait déjà la gérer correctement, même s'il ne s'agit pas d'une étiquette connue.

Si vous insistez, une expression régulière faible pourrait être:

/<start more>(((?!<(?:/end|start) more>).)+)</end more>/ 
+0

Voici un exemple - il ne capture que la paire la plus interne: http://rubular.com/r/4p8jGiepW5 – Kobi

+0

Merci pour la réponse et l'exemple. J'ai enlevé le "plus" du code, et ' (((?! <(?: \/Fin | début)>).) +) <\/end>' fonctionne parfaitement. la raison de ne pas utiliser d'autre analyseur HTML (j'ai essayé php domdocument) que si nous essayons d'obtenir du contenu, il supprime également toutes les balises html imbriquées, que nous devions afficher en flash (par exemple gras, italique, etc.) pour tous ceux qui sont intéressés peuvent consulter http://pk.dynamiconlinesystems.com/mc_main/ pour en savoir plus sur ses travaux en cours. –

+0

Au lieu d'obtenir le contenu du HTML analysé, vous devez écrire les parties dont vous avez besoin avec un sérialiseur HTML. – OrangeDog

2

Il est not possible pour analyser correctement xml/html avec des expressions régulières. Vous devrez écrire un analyseur approprié.

+1

Pour soutenir votre point, vous pourriez avoir lié à l'une des explications plus objectives ci-dessous, pas la réponse amusante. – mario

+0

J'aurais pu le faire, mais ce serait moins amusant. Une fois que vous êtes informé que xml (ou tout langage basé sur l'arbre) n'est pas régulier, il est assez facile de trouver des explications raisonnables. – OrangeDog

+0

La raison pour laquelle les gens continuent de poster des questions html-with-regex n'est pas que le lien ne soit pas assez drôle. C'est parce que rarement quelqu'un offre une alternative plus simple, et le mot ne se passe pas de ne pas expliquer. – mario

Questions connexes