2014-08-29 66 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

相关问题