RegEx:来自文本的URI部分

时间:2011-02-12 01:19:17

标签: c# .net regex uri

一切!我有一个像这样的文字“有些文字用uri http://test.com和其他词语。”我需要使用一个正则表达式来获取部分uri。

我试试这个:

string text = "Some text with uri http://test.com and other words.";
string pattern = @"\b(\S+)://([^:]+)(?::(\S+))?\b"; 
MatchCollection matches = Regex.Matches(text, pattern); 

当我用“uri http://test.com”或“word1 http://test.com:5000 word2”编写“有些文字”时,它可以正常工作。

哪里出错?

2 个答案:

答案 0 :(得分:1)

你的第二个+修饰符是贪婪的,所以它匹配http://之后的所有内容,除非它到达:或行尾。试试这个:

@"\b(\w+)://([^:]+?)(?::(\S+))?\b"

答案 1 :(得分:0)

这会让你更接近......我仍然不确定你想要得到什么......

如果你能展示你想要的结果会有所帮助......

\b(\S+)://([^: ]+)