2010-12-22 17 views
1

Ich habe eine HTML-Textdatei und ich versuche, alle HTML-Tags in Tabellen zu entfernen, d. H. Entfernen Sie HTML innerhalb der <TABLE> und </TABLE> Tags.Was ist los mit dieser Regex in vb.NET?

Doch was ist wirklich seltsam ist, dass der Regex, die ich verwende, (?<=<table((?!</table).)*)<(?!/table)[^>]+>, funktioniert perfekt in PowerGREP oder EditPad Pro jedoch, wenn in vb.NET (oder Expresso) auf genau die gleichen Text angewandt, ist es nicht Arbeit!

Ich benutze nur eine einfache Methode replace: newString = Regex.Replace(oldString, "(?<=<table((?!</table).)*)<(?!/table)[^>]+>", string.Empty, RegexOptions.IgnoreCase)

Ich bin immer total verwirrt und frage mich, ob jemand kann mir helfen und sehen, warum dies der Fall ist und welche Änderung, die ich für sie zu machen, um brauchen in .NET arbeiten. Vielen Dank!

Unten finden Sie die Beispieltext:

================ 
texttexetext 

<TABLE> 

    <TAG1> 

    <TAG2>tabletext<TAG3> 

    <TAG4> 

</TABLE> 

texttexttext 
=============== 

Die fertige Ausgabe in PowerGREP ist

================ 
texttexetext 

<TABLE> 


tabletext 


</TABLE> 

texttexttext 
=============== 
+0

Es ist schwer zu erraten, was falsch ist, ohne den entsprechenden VB-Code zu sehen. Abgesehen davon, dass es im Allgemeinen sinnvoll ist, Informationen aus HTML zuverlässig zu extrahieren, ist es besser, einen HTML-Parser zu verwenden (wie HTML Agility Pack), da die Grammatik von HTML nicht regelmäßig ist. Reguläre Ausdrücke werden oft vom Tokenizer in einer Parsing-Lösung verwendet, sind aber nicht die ganze Geschichte. – JasonTrue

+1

[Hast du nicht schon nach diesem Problem gefragt?] (Http://stackoverflow.com/questions/4483578/regex-to-parse-html-tables) Du solltest Regex nicht schon benutzen. Überprüfen Sie übrigens, ob [die Optionen] (http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regexoptions.aspx) identisch sind (z. B. ignoreCase). –

+1

Ich bin mir ziemlich sicher, dass nur Jon Skeet HTML mit Regex analysieren kann. Oh warte nicht, er kann nicht http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 –

Antwort

0

Es in EditPadPro arbeitet wenn Sie angeben Dot Spiele Newline Modus. Ich sehe dich nicht in deinem VB-Code.