VB.NET:从单词之间的行中获取字符串

时间:2014-08-29 22:23:52

标签: regex 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来获取两个单词之间的字符串,但在这种情况下它不起作用。 提前谢谢。

3 个答案:

答案 0 :(得分: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 :(得分: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

答案 2 :(得分:1)

根据您的数据,您可以考虑使用否定前瞻来匹配您想要的行。

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