1

我想使用正则表达式在 url 列表中找到确切的 url mach。

                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

4 回答 4

2

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

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

坦率地说,我认为您在语法或实现方面没有问题。如果你想调整我上面写的表达式,这里就是这样做的地方:在线正则表达式工具

于 2012-11-06T08:12:48.350 回答
1

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

Match match = Regex.Match(myword,pattern);
于 2012-11-06T08:07:17.687 回答
1

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

myword.Split(' ').Where(x => x.Equals(url)).Single().Replace(url, "pattern");
于 2012-11-06T08:12:27.900 回答
0
  • 正如已经指出的那样,你的论点是错误的
  • .url在正则表达式中模式是一个特殊字符,所以当你使用它来构建模式时你需要转义- 你可以使用Regex.Escape(url)
  • 您不需要在执行替换之前检查匹配是否成功,除非您有其他逻辑取决于匹配是否成功。
于 2012-11-06T08:15:00.797 回答