2011-02-07 46 views
0

我想找到正確的RegEx來捕獲一些(可能)重複的數據。我不知道它會重複多少次。如果我給出數據的一個例外,我想捕獲什麼,任何人都可以指向正確的方向?它的淨正則表達式引擎(Visual Basic中)如何在.Net中使用正則表達式捕獲以下重複數據?

的數據基本上是這樣的,由$分隔$當有一個以上的次數:

MyFunction的('001 $$字符串說明1 $!$ 002 $$字符串描述2');

我想捕捉的下列基團(其中可以有任何數量的):

1:001 $$字符串說明1

2:002 $$字符串說明2

等等,等等

我知道這可以RegEx.Split,可能String.Split做,但我還是想知道,如果它可能在一個單一的捕獲正則表達式:)任何指針?

非常感謝。

回答

1

你可以使用這個表達式做到這一點:

Dim RegexObj As New Regex("MyFunction\('(?:(\d+\$\$[^$]+)(?:\$!\$)?)+'\);") 

,然後,一個成功的比賽後,這樣的事情:

Dim MatchResults As Match = RegexObj.Match(SubjectString) 
If MatchResults.Success Then 
    Console.WriteLine("Matched text: {0}", MatchResults.Value) 
    For Each capture As Capture In MatchResults.Groups(1).Captures 
     Console.WriteLine(" Capture: {0}", capture.Value) 
    Next 
    MatchResults = MatchResults.NextMatch() 
End While 

(我不知道VB.NET,不過,所以我希望我的語法正確)。

+0

我似乎只從那個「002 $$ String Description 2」中得到一個匹配,即最後一個項目? – Tom 2011-02-09 09:49:05

相關問題