2012-04-07 4 views
0

Ich versuche, einen Teil von HTML zwischen 2 Kommentare zu extrahieren.Regex-Code zu extrahieren html zwischen 2 Kommentare in vb.net funktioniert nicht

hier ist der Testcode:

Sub Main() 

    Dim base_dir As String = "D:\" 
    Dim test_file As String = base_dir & "72.htm" 

    Dim start_comment As String = "<!-- start of content -->" 
    Dim end_comment As String = "<!-- end of content -->" 

    Dim regex_pattern As String = start_comment & ".*" & end_comment 
    Dim input_text As String = start_comment & "some more html text" & end_comment 

    Dim match As Match = Regex.Match(input_text, regex_pattern) 


    If match.Success Then 
     Console.WriteLine("found {0}", match.Value) 
    Else 
     Console.WriteLine("not found") 
    End If 

    Console.ReadLine() 

End Sub 

Die oben genannten Arbeiten.

Wenn ich versuche, tatsächliche Daten von der Festplatte zu laden, schlägt der folgende Code fehl.

Sub Main() 

    Dim base_dir As String = "D:\" 
    Dim test_file As String = base_dir & "72.htm" 

    Dim start_comment As String = "<!-- start of content -->" 
    Dim end_comment As String = "<!-- end of content -->" 

    Dim regex_pattern As String = start_comment & ".*" & end_comment 
    Dim input_text As String = System.IO.File.ReadAllText(test_file).Replace(vbCrLf, "") 

    Dim match As Match = Regex.Match(input_text, regex_pattern) 


    If match.Success Then 
     Console.WriteLine("found {0}", match.Value) 
    Else 
     Console.WriteLine("not found") 
    End If 

    Console.ReadLine() 

End Sub 

Die HTML-Datei enthält die Start- und Endkommentare und eine gute Menge an HTML dazwischen. Einige Inhalte in der HTML-Datei sind in Arabisch.

Mit Dank und Grüße.

+0

http://StackOverflow.com/a/1732454/284240 –

Antwort

2

Versuchen in RegexOptions.Singleline in Regex.Match(...) wie folgt übergeben:

Dim match As Match = Regex.Match(input_text, regex_pattern, RegexOptions.Singleline) 

Dies wird der Punkt des . Spiel newlines machen.

+0

Danke, das hat für mich funktioniert. – MoizNgp

0

Ich weiß nicht vb.net, aber passt . Newlines oder gibt es eine Option, die Sie für das festlegen müssen? Erwägen Sie die Verwendung von [\s\S] anstelle von ., um Zeilenumbrüche einzufügen.