2009-12-27 22 views
1

我想实现一个RegExp(正则表达式),它可以检查字符串以查看它是否包含“http://”(即它包含一个URL),然后把整个URL变成一个新的字符串变量。我使用的字符串不是HTML,它只是包含文字,字符,数字和URL的文本。如何从200字符的字符串中提取C#中的字符串,最好使用RegExp

我想我会在我的字符串中寻找一个“http://”的提及,并以一个新的字符串为起点,它的起点是http://,字符串的末尾是下一个空白点就在完整的URL之后。

请帮助,我已经看到这个高和低无济于事!

在此先感谢,亚历克斯

+1

需要一个例子,什么可以用来知道URL VS的任何文本有休息的结束。良好的资源btw:http://www.regular-expressions.info/ – 2009-12-27 02:47:46

+0

好吧取出你的平均Twitter帖子。这是我正在处理的文本(实际上少于200个字符的字符串)。来自Twitter的JSON格式信息包含文本消息正文本身内的非HTML嵌套URL。 我很想知道如何写或甚至读取一个简单的正则表达式,但我真的很难与它恐怕:S – Alex 2009-12-27 02:54:21

+0

学习的时间 - 我给出的网站非常适合通过正则表达式构建,它列出了您的软件可以在代码中实现它们之前使用它来测试正则表达式。我自己使用RegexCoach。 – 2009-12-27 03:03:58

回答

2

我正在回答到水木清华这样here。我想这个代码可以改变以适应你的需求;它加载文本文件并搜索网址。

using (StreamReader reader = new StreamReader(File.OpenRead("c:\\test.txt"))) 
{ 
    string content = reader.ReadToEnd(); 
    string pattern = @"((https?|ftp|gopher|telnet|file|notes|ms-help):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)"; 
    MatchCollection matches = Regex.Matches(content, pattern); 
    foreach (Match match in matches) 
    { 
     GroupCollection groups = match.Groups; 
     Console.WriteLine("'{0}' repeated at position {1}", 
          groups[0].Value, groups[0].Index); 
    } 
} 

希望这会有所帮助,至于

+0

非常感谢,看起来不错,我会明天尝试一下,并让你知道:) – Alex 2009-12-27 03:45:21

+0

我适应了这一点,但RegEx部分是完美的从一个字符串中提取任何Internet地址。 谢谢! – Alex 2009-12-27 14:58:27

相关问题