C# URL正则表达式-无法使其工作

C# URL正则表达式-无法使其工作,c#,.net,regex,C#,.net,Regex,我使用以下正则表达式查找文本中是否存在url,但它似乎遗漏了一些url,如: youtube.be/8P0BxJO youtube.com/watch?v=VrmlFL 还有一些小链接(但不是全部) 有什么办法可以解决吗?请参阅相关问题,第一个答案应该能帮助您解决问题。这个建议既可以找到链接,又可以替换它们,所以很明显,只需要你需要的。和文章是不同的方法,应该得到或多或少相同的结果 另一种(也许更可靠的)非正则表达式方法是通过在空格和标点符号上拆分来标记字符串,然后检查标记是否是有效的uri

我使用以下正则表达式查找文本中是否存在url,但它似乎遗漏了一些url,如:

  • youtube.be/8P0BxJO
  • youtube.com/watch?v=VrmlFL
还有一些小链接(但不是全部)

有什么办法可以解决吗?

请参阅相关问题,第一个答案应该能帮助您解决问题。这个建议既可以找到链接,又可以替换它们,所以很明显,只需要你需要的。和文章是不同的方法,应该得到或多或少相同的结果


另一种(也许更可靠的)非正则表达式方法是通过在空格和标点符号上拆分来标记字符串,然后检查标记是否是有效的uri(正如问题所指出的,这只适用于格式良好的uri)。

您的正则表达式在示例中返回true;您的问题在其他地方。也许您可以向我们提供有关您的代码和您试图解析的文本的更多详细信息。正如其他评论所建议的,这两个URL都使用当前表达式,正如我在您的regex works上使用的这个小工具所测试的那样,但我认为您在“?”[\w-;,./?%&=]之前缺少了一个反斜杠[\w-;,./\?%&=]
Match m = Regex.Match(nc[i].InnerText, 
   @"(http(s)?://)?([\w-]+\.)+[\w-]+(/\S\w[\w- ;,./?%&=]\S*)?");

if (m.Success)
{
    MessageBox.Show(nc[i].InnerText);
}