我有以下字符串
@Builder
我只想获取图片网址。
我的代码是:
background-image: url('https://s3-eu-west-1.amazonaws.com/files.domain.com/uploads/image/file/168726/carousel_IMG_6455.jpg')
Match.Success 不返回任何内容,因此无法获取图片网址。
有什么遗失的吗?这曾经工作但现在不行。
答案 0 :(得分:1)
以下模式可以实现您的结果,而无需使用string.replace
。
var pattern = @"'(?<url>.*)'";
Match match = Regex.Match(image, pattern);
Console.WriteLine($"Math: {match.Groups["url"].Value}");
如果您想要字符串周围的"
,请添加以下内容:
var result = $"\"{match.Groups["url"].Value}\""
答案 1 :(得分:1)
不需要正则表达式,只需
'
substring http
var s = "background-image: url('https://s3-eu-west-1.amazonaws.com/files.domain.com/uploads/image/file/168726/carousel_IMG_6455.jpg')";
var res = s.Split(new[] {"'"}, 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
如果您需要使用正则表达式,请使用标准正则表达式匹配两个字符串之间的字符串,start(.*?)end
其中(.*?)
捕获到任意0或更多字符除了换行符之外,*?
量词是 lazy 的尽可能少:
var s = "background-image: url('https://s3-eu-west-1.amazonaws.com/files.domain.com/uploads/image/file/168726/carousel_IMG_6455.jpg')";
var res = Regex.Match(s, @"'(.*?)'").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
答案 2 :(得分:0)
要获取url,您可以使用Split并在“url('”之后获取字符串,并在末尾用空字符串替换')或再次使用Split并获取“')之前的字符串”或使用Substring获取“url('”和“')之间的字符串”或者只是使用.Replace删除不是url的所有内容。
string url = img.Split(new[] { "url('" }, StringSplitOptions.None)[1].Replace("')", "");
或
string url = img.Split(new[] { "url('" }, StringSplitOptions.None)[1].Split(new[] { "')" }, StringSplitOptions.None)[0];
或
string url = img.Substring(img.IndexOf("url('") + "url('".Length, img.IndexOf("')") - img.IndexOf("url('") - "url('".Length);
或
string url = img.Replace("background-image: url('","").Replace("')","");
答案 3 :(得分:0)
正则表达式:(\".*\")
将匹配给定输入字符串的URL: background-image:url(“https://s3-eu-west-1.amazonaws.com/files.domain.com/uploads/image/file/168726/carousel_IMG_6455.jpg”)
image = image.Replace(@"'", "\"");
Match match = Regex.Match(image, "(\\\".*\\\")");
修改强> 如果您正在寻找可以使用单引号或双引号对的内容:
(\".*\"|'.*')
Match match = Regex.Match(image, "(\\\".*\\\"|'.*')");