C# 在c中匹配结果#

C# 在c中匹配结果#,c#,regex,replace,C#,Regex,Replace,我有以下字符串 background-image: url('https://s3-eu-west-1.amazonaws.com/files.domain.com/uploads/image/file/168726/carousel_IMG_6455.jpg') 我只想得到图片的URL 我的代码是: image = image.Replace(@"'", "\""); Match match = Regex.Match(image, @"'([

我有以下字符串

background-image: url('https://s3-eu-west-1.amazonaws.com/files.domain.com/uploads/image/file/168726/carousel_IMG_6455.jpg')
我只想得到图片的URL

我的代码是:

image = image.Replace(@"'", "\"");
Match match = Regex.Match(image, @"'([^']*)");
Match.Success不返回任何内容,因此无法获取图像URL

有什么东西不见了吗?这过去是有效的,但现在不行。

的正则表达式:
(\“*”)

将匹配给定输入字符串的URL: 背景图像:url(“https://s3-eu-west-1.amazonaws.com/files.domain.com/uploads/image/file/168726/carousel_IMG_6455.jpg))

编辑: 如果您正在寻找匹配成对单引号或双引号的内容,您可以使用:

(\".*\"|'.*')

Match match = Regex.Match(image, "(\\\".*\\\"|'.*')");

以下模式实现了您的结果,而不使用
字符串。替换

var pattern = @"&#39;(?<url>.*)&#39;";
Match match = Regex.Match(image, pattern);
Console.WriteLine($"Math: {match.Groups["url"].Value}");

不需要正则表达式,只要

  • 使用
    和#39拆分字符串子字符串
  • 查找以http开头的元素
  • 返回找到的第一个项目
:

如果需要使用正则表达式,请使用标准正则表达式来匹配两个字符串之间的字符串,
start(.*)end
其中
(.*)
将新行以外的任何0个或更多字符捕获到组1中,尽可能少地使用
*?
量词:


请参见

您正在用双引号替换“';”
”,而您的正则表达式正在寻找一个单引号
。我在正则表达式hero和dotnet fiddle()中进行了测试,我想这里的答案是:对您有用。@DourHighArch Yes!!这就是问题所在。在某些情况下,随附的是“和其他“如果任何答案解决了您的问题,请接受答案以关闭线程”。
var pattern = @"&#39;(?<url>.*)&#39;";
Match match = Regex.Match(image, pattern);
Console.WriteLine($"Math: {match.Groups["url"].Value}");
var result = $"\"{match.Groups["url"].Value}\""
var s = "background-image: url(&#39;https://s3-eu-west-1.amazonaws.com/files.domain.com/uploads/image/file/168726/carousel_IMG_6455.jpg&#39;)";
var res = s.Split(new[] {"&#39;"}, StringSplitOptions.None)
    .Where(v => v.StartsWith("http"))
    .FirstOrDefault();
Console.WriteLine(res);
// => https://s3-eu-west-1.amazonaws.com/files.domain.com/uploads/image/file/168726/carousel_IMG_6455.jpg 
var s = "background-image: url(&#39;https://s3-eu-west-1.amazonaws.com/files.domain.com/uploads/image/file/168726/carousel_IMG_6455.jpg&#39;)";
var res = Regex.Match(s, @"&#39;(.*?)&#39;").Groups[1].Value ?? string.Empty;
Console.WriteLine(res);
// => https://s3-eu-west-1.amazonaws.com/files.domain.com/uploads/image/file/168726/carousel_IMG_6455.jpg