2010-12-07 6 views
1

Je cherche la balise html end dans un fichier mhtml. Le html est en lignes à largeur fixe avec un saut de ligne à la fin de ce type:En utilisant Regex, comment trouver du texte divisé par un autre caractère de groupe?

size:12pt">Insert an image into the document here.</span></p><p style=3D"ma= 
rgin:0pt 0pt 3pt; text-align:center"><img src=3D"image.001.png" width=3D"20= 
0" height=3D"200" alt=3D"" /></p><p style=3D"margin:0pt 0pt 3pt"><span styl= 
e=3D"font-family:Arial; font-size:12pt">&#xa0;</span></p></div></body></htm= 
l> 

Indication de la balise de fin </html> est divisé en son milieu par « = \ n ».

Comment puis-je trouver le </html> balise de fin, peu importe où il est divisé?

je peux trouver une permutation unique à l'aide Regex similaire à ce qui suit, mais je voudrais le faire d'un seul coup.

<((=\n)?/html>) 
</((=\n)?html>) 
</h((=\n)?tml>) 
</ht((=\n)?ml>) 
etc... 

J'ai lu RegEx match open tags except XHTML self-contained tags et lu le message à http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html entre autres, mais je pense toujours que la question est valable. Je ne fais pas de moteur d'analyse html. Je cherche juste un motif très spécifique. Et ... ça doit sortir demain. Toutes les bonnes raisons de le faire vers le bas et la solution sale>: D

+0

Vous ne devriez vraiment pas analyser le HTML avec regex. Lire: http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – LBushkin

Répondre

2
<(=\n)?/(=\n)?h(=\n)?t(=\n)?m(=\n)?l(=\n)?> 
+0

Merci Alan. Cela a fonctionné parfaitement. – Jason

0

Il suffit d'utiliser un Regex.Replace() et recherchez = \ r \ n et le remplacer par un String.Empty. Alors vous pouvez faire vos matchs sans intervention?

0

HTML est pas une langue régulière ... il ne se prête pas au traitement en utilisant des expressions régulières.

tâches comme accolade ou comptage/correspondance de balise ne sont pas peut être fait correctement pour l'entrée arbitraire en utilisant des expressions régulières.

Vous devriez vraiment utiliser un analyseur HTML réel de le faire, pas regex.

+0

Bien sûr, la tâche à accomplir est une transformation régulière, et un HTML analyseur devrait vraiment s'étouffer sur ce 'HTML', donc ce n'est pas vraiment une mauvaise chose. – Charles

Questions connexes