2010-04-28 4 views
0

J'ai essayé de dépouiller les balises HTML à l'aide de regex remplacer par modèle "< [^>] *>" de mot généré html qui ressemble à ceci:bande RegEx balises html problème

< html xmlns: v = " urn: schemas-microsoft-com: VML " xmlns: o = " urn: schemas-microsoft-com: office: office " xmlns: w = " urn: schemas-microsoft-com: office: mot " xmlns: st1 = " urne : schemas-microsoft-com: office: smarttags " xmlns = " http://www.w3.org/TR/REC-html40"&gt;

< tête > < meta http-equiv = contenu Content-Type = " text/html; charset = iso-8859-2 " > < meta name = contenu = Générateur " Microsoft Word 11 (milieu filtré) " > < - [si mso!] > < de style >

v: * {comportement: url (# default # VML);}

o: * {comportement: url (# default # VML);}

w: * {comportement: url (# default # VML);}

.shape {comportement: url (# default # VML);}

</le style > <! [endif] - > < o: SmartTagType namespaceuri = " urn: schemas-microsoft-com: office: SmartTags " name = " lieu " downloadURL = " http://www.5iantlavalamp.com/"/&gt; < - [si mso!] > < de style >

st1: * {comportement: url (# default # ieooui)}

</le style > < [endif] - - > < de style > < - /* Définitions polices / @ font-face {famille de fontes: Tahoma; panose-1: 2 11 6 4 3 5 4 4 2 4;} / Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {margin: 0in; marge inférieure: .0001pt; taille de police: 12.0pt; Famille de police: " Times New Roman ";} a: lien, span.MsoHyperlink {color: blue; text-decoration: underline;} a: visité, travée.MsoHyperlinkFollowed {color: violet; text-decoration: underline;} span.EmailStyle17 {mso-style-type: personnel; famille de polices: Arial; couleur: windowtext;} span.EmailStyle18 {mso-style-type: réponse personnelle; famille de polices: Arial; couleur: marine;} @page Section1 {size: 8.5in 11.0in; marge: 1.0in 1.25in 1.0in 1.25in;} div.Section1 {page: Section1;} - > </le style >

</tête >

Tout fonctionne bien sauf pour les lignes en gras ci-dessus, quelqu'un a des idées sur la façon de les faire correspondre?

Merci,

Aleksandar

+0

Vous devriez mettre votre code HTML dans le bloc CODE (bouton 101/010). Il rend la lecture beaucoup plus facile –

Répondre

-1
+0

Il n'essaie pas de l'analyser, il essaie de s'en débarrasser. Je suis d'accord avec vous - le PO va rencontrer le même genre de problème - mais ce lien ne fait pas vraiment la différence. – Etaoin

+0

Battez-moi: D –

+5

Cela dépend de la situation. Si l'OP doit simplement nettoyer quelques fichiers HTML dans un éditeur de texte, une simple regex ou deux peut très bien faire le travail. –

0

Les personnes recommandent généralement l'utilisation d'un analyseur au lieu de regex lorsqu'ils traitent avec HTML.

Si vous avez utiliser une expression régulière :) vous pouvez utiliser-

<style>.*?</style> 
2

Votre regex ne prend pas en compte que les commentaires peuvent contenir > caractères qui ne sont pas résiliés le commentaire. Essayez cette regex:

<!--.*?-->|<[^>]*> 

Vous devez activer l'option de faire des sauts de ligne . match. Comment faire cela dépend de l'application ou du langage de programmation avec lequel vous utilisez cette expression régulière. Par exemple. En Perl vous utiliseriez le drapeau /s. Dans .NET, vous définissez RegexOptions.SingleLine.

+0

* Votre * regex ne prend pas en compte que les valeurs d'attribut des balises HTML peuvent contenir '>', comme dans '<enter text here> ' –

+1

Ma réponse explique seulement pourquoi l'expression rationnelle d'Aleksandar ne répond pas à ses attentes et ne fournit qu'une solution Il y a beaucoup de choses que mon regex ne prend pas en compte: si MS Word n'a pas mis ses balises '