2017-03-03 5 views
0

私は、一般的に、さまざまなヘッダーを手動で編集する必要があるというプレーンテキストで報告されています。私はヘッダーの一番上の行と一番下の行を知っています - ドキュメント全体では違いはありませんが、テキスト間にはさまざまなテキスト行があります。 の書式は次のようになります。vb.net regex parse paragraph from report

BEGIN REPORT FOR CLIENT XXYYZZ 
RANDOM BODY TEXT 
RANDOM BODY TEXT 
RANDOM BODY TEXT 
RANDOM BODY TEXT 
RANDOM BODY TEXT 
FINAL REPORT 

私は、リッチテキストボックス内のこのテキストを強調するために正規表現を使用しようとしています。私は以下のコードを使用している場合、私は問題なく、トップラインのすべての発生を強調表示することができます。

Dim mystring As String = "(BEGIN)(.+?)(XXYYZZ)" 
Dim regHeader As New Regex(mystring) 
Dim regMatch As Match = regHeader.Match(rtbMain.Text) 

While regMatch.Success 
    rtbMain.Select(regMatch.Index, regMatch.Length) 
    rtbMain.SelectionColor = Color.Blue 

    regMatch = regMatch.NextMatch() 
End While 

はしかし、かつて私は、それはもはや何も強調表示されます段落全体を検索するために、コードを変更しようとします。私はそれがあることを期待していたが、それは何らかの理由でそれを好きに縫い目がなく、何を強調表示しませんものです下:

Dim mystring As String = "(BEGIN REPORT FOR CLIENT XXYYZZ)(.+?)(FINAL REPORT)" 
Dim regHeader As New Regex(mystring) 
Dim regMatch As Match = regHeader.Match(rtbMain.Text) 

While regMatch.Success 
    rtbMain.Select(regMatch.Index, regMatch.Length) 
    rtbMain.SelectionColor = Color.Blue 

    regMatch = regMatch.NextMatch() 
End While 

任意の助けいただければ幸いです。

答えて

0

.に改行を一致させるには、singleline modeが必要です。

Dim mystring As String = "(BEGIN REPORT FOR CLIENT XXYYZZ)(.+?)(FINAL REPORT)" 
Dim regHeader As New Regex(mystring, RegexOptions.Singleline) 
Dim regMatch As Match = regHeader.Match(rtbMain.Text) 

While regMatch.Success 
    rtbMain.Select(regMatch.Index, regMatch.Length) 
    rtbMain.SelectionColor = Color.Blue 

    regMatch = regMatch.NextMatch() 
End While 

はお知らせRegexOptions.Singleline

はこれを試してみてください。

+0

これは私の問題を解決しました。 – Matt

関連する問題