2012-04-07 8 views
0

2つのコメントの間にhtmlの一部を抽出しようとしています。vb.netの2つのコメントの間にhtmlを抽出するregexコード

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 

上記作品:ここ

は、テストコードです。

実際のデータをディスクからロードしようとすると、以下のコードは失敗します。

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 

HTMLファイルには、開始コメントと終了コメントと、その間にかなりの量のHTMLが含まれています。 HTMLファイルの一部のコンテンツはアラビア語で表示されます。

ありがとうございました。

+0

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

答えて

2

は次のようにRegex.Match(...)RegexOptions.Singlelineに渡してみてください。

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

これは、ドットの.マッチ改行を行います。

+0

ありがとう、それは私のために働いた。 – MoizNgp

0

私はvb.netがわかりませんが、.に一致する改行がありますか、それとも設定する必要がありますか?改行を含めるには、.の代わりに[\s\S]を使用することを検討してください。

関連する問題