一切!我有一个像这样的文字“有些文字用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”编写“有些文字”时,它可以正常工作。
哪里出错?
答案 0 :(得分:1)
你的第二个+
修饰符是贪婪的,所以它匹配http://
之后的所有内容,除非它到达:
或行尾。试试这个:
@"\b(\w+)://([^:]+?)(?::(\S+))?\b"
答案 1 :(得分:0)
这会让你更接近......我仍然不确定你想要得到什么......
如果你能展示你想要的结果会有所帮助......
\b(\S+)://([^: ]+)