正则表达式:从文本中提取URI部分

3
大家好!我有一个类似这样的文本:“一些文本和网址 http://test.com 和其他单词。” 我需要使用一个正则表达式来获取网址的部分。
我尝试了以下代码:
string text = "Some text with uri http://test.com and other words.";
string pattern = @"\b(\S+)://([^:]+)(?::(\S+))?\b"; 
MatchCollection matches = Regex.Matches(text, pattern); 

当我写下 "Some text with uri http://test.com" 或者 "word1 http://test.com:5000 word2" 时,它可以正常工作。

有什么问题吗?


什么出了问题?你说“它能工作”。 - payne
我的猜测是这个返回的是 http://test.com 和其他单词。 对吗? - Justin Morgan
2个回答

1

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

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

0

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

如果你能展示一下你想要的结果,那会更有帮助...

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接