2014-08-29 53 views
0

我想找到一種方法來獲取包含在兩個單詞之間的字符串,但我無法弄清楚如何做到這一點。我需要將每行添加到列表框中。VB.NET:從單詞之間的行中獲取字符串

例如:

First: 
http://google.com 
http://yahoo.com 
default 

Second: 
http://facebook.com 
http://123.com 
http://test.com 
default 

使用這個作爲一個示例,第一列表框需要包括以下項目:

http://google.com 
http://yahoo.com 
default 

而第二列表框應包括那些項目:

http://facebook.com 
http://123.com 
http://test.com 
default 

這怎麼可能?我只知道如何使用split在兩個單詞之間得到一個字符串,但在這種情況下它不起作用。 在此先感謝。

+0

您的意思是在第一個廣告默認值之間可能有任意數量的行。但該塊包含上述字符串。 – 2014-08-29 22:25:55

+0

是的,確切地說。這個例子是隨機的。 – suchanoob 2014-08-29 22:26:52

+0

你想捕捉http://google.com或yahoo.com – 2014-08-29 22:29:33

回答

1

基於把你的數據,你可以考慮使用負先行,以配合您只想線。

For Each m As Match In Regex.Matches(input, "(?m)^(?!(?:First|Second):).+$") 
    ListBox1.Items.Add(m.Value) 
1

我想你想這樣的事情,

(?<=\n|^)First:(?:(?!\n\n).)*?(http://google\.com)(?:(?!\n\n|$).)*?(http://yahoo\.com)(?:(?!\n\n).)*?default(?=\n\n)|(?<=\n|^)Second:(?:(?!\n\n).)*?(http://facebook\.com)(?:(?!\n\n).)*?(http://123\.com)(?:(?!\n\n).)*?(http://test\.com)(?:(?!\n\n).)*?default(?=\n\n|$) 

DEMO

+1

我想出了一個更好的方法來做到這一點,然後列出在OP問題中作爲「示例」發佈的靜態URL。 – hwnd 2014-08-29 22:39:32

1

怎麼是這樣的:

(?<=First:)(.*) 

Online RegEx Demo

有了這個代碼:

Dim options = RegexOptions.Singleline 
Dim sampleInput="First:" + Environment.NewLine + "http://google.com" + Environment.NewLine + "http://yahoo.com" + Environment.NewLine + "default" 
Dim results = Regex.Match(sampleInput,"(?<=First:)(.*)",options).Value 

Code Demo

相關問題