找到确切的网址匹配

时间:2012-11-06 08:02:39

标签: c# regex

我想使用正则表达式在网址列表中找到确切的网址匹配。

                string url = @"http://web/P02/Draw/V/Service.svc";
                string myword = @"http://web/P02/Draw/V/Service.svc http://web/P02/Draw/V/Service.svc?wsdl";
                string pattern = @"(^|\s)" + url + @"(\s|$)";
                Match match = Regex.Match(pattern, myword);
                if (match.Success)
                {
                    myword = Regex.Replace(myword, pattern, "pattern");
                }

但该模式没有返回结果。

您认为这是什么问题?

4 个答案:

答案 0 :(得分:2)

除了奇怪的格式,这里有一个匹配列表中每个URL的模式。

Pattern = "http://([a-zA-Z]|/|[0-9])*\.svc";

坦率地说,我认为您在语法或实现方面遇到问题。如果你想调整我上面写的表达式,可以选择这样做:Online RegEx Tool

答案 1 :(得分:1)

您向Regex.Match方法传递了错误的参数。你需要交换像这样的参数>

Match match = Regex.Match(myword,pattern);

答案 2 :(得分:1)

为什么不在字符串集合上使用Linq(当用空格分割时)

myword.Split(' ').Where(x => x.Equals(url)).Single().Replace(url, "pattern");

答案 3 :(得分:0)

  • 正如已经指出的那样,你的论据是错误的。
  • 正则表达式模式中的
  • .是一个特殊字符,因此当您使用它来构建模式时需要转义url - 您可以使用Regex.Escape(url)
  • 在执行替换之前,您无需检查匹配是否成功,除非您有其他逻辑取决于匹配是否成功。