2010-10-24 7 views
-2

Comment puis-je faire correspondre un texte qui est en dehors d'une balise d'ancrage? exemple: "test <a>test</a>" je veux obtenir le test en dehors des tags a seulement.aide avec les expressions régulières

merci.

+0

Qu'essayez-vous exactement d'accomplir? – Gumbo

+0

J'essaye de remplacer le texte qui est seulement en dehors d'une étiquette de lien. –

+0

Etes-vous en train d'essayer de le faire en Javascript dans le navigateur, ou essayez-vous de le faire en fichiers HTML bruts? – Pointy

Répondre

4

Vous entrez dans une zone dangereuse ici dans la mesure où essayer d'analyser HTML/XML avec des expressions régulières n'est pas faisable dans la plupart des cas. L'analyse du balisage n'est-elle pas une option?

+0

je sais: s et je ne peux pas analyser le balisage –

0

Vous devez utiliser une regex anticipée. Ceux-ci peuvent être assez complexes. Voir cette page pour plus d'informations sur ce sujet: http://www.regular-expressions.info/refadv.html

Pour votre exemple simple, quelque chose comme ça ferait l'affaire:

/test(?=<a>test<\/a>)/ 

Cependant, il obtiendra très très complexe si vous avez besoin de faire correspondre contre HTML plus varié, au point qu'il peut être pratiquement impossible d'obtenir correctement si vous ne savez pas comment l'entrée HTML sera formatée.

Vous pouvez donc trouver mieux à long terme d'utiliser un analyseur DOM pour localiser du texte dans un document HTML.

Questions connexes