我有以下一组网址:
http://test/mediacenter/Photo Gallery/Conf 1/1.jpg
http://test/mediacenter/Photo Gallery/Conf 2/3.jpg
http://test/mediacenter/Photo Gallery/Conf 3/Conf 4/1.jpg
我想做的就是从网址中提取Conf 1,Conf 2,Conf 3,“照片库”之后的级别(网址不是静态的,它们共享的是照片库的共同级别)
感谢任何帮助
答案 0 :(得分:1)
是否有必要使用正则表达式?你可以在不使用像这样的正则表达式的情况下获得它
string str= @"http://test/mediacenter/Photo Gallery/Conf 1/1.jpg";
var z=qq.Split('/')[5];
或
var x= new Uri(str).Segments[3];
答案 1 :(得分:1)
这应该是你:
var s = @"http://test/mediacenter/Photo Gallery/Conf 11/1.jpg";
var regex = new Regex(@"(Conf \d*)");
var match = regex.Match(s);
Console.WriteLine(match.Groups[0].Value); // Prints a
当然,你必须确信'Conf x'(其中x是一个数字)不会出现在URL的其他地方。
这将通过剥离示例中的多个文件夹(Conf 3 / Conf 4)来稍微改善它。
var regex = new Regex(@"((Conf \d*/*)+)");
它会留下尾随/
。
答案 2 :(得分:0)
尝试像这样的RegEx。
Conf[^\/]*
这应该为您提供URL的所有“Conf”部分。
我希望有所帮助。
答案 3 :(得分:0)
不需要正则表达式。
string testCase = "http://test/mediacenter/Photo Gallery/Conf 1/1.jpg";
string urlBase = "http://test/mediacenter/Photo Gallery/";
if(!testCase.StartsWith(urlBase))
{
throw new Exception("URL supplied doesn't belong to base URL.");
}
Uri uriTestCase = new Uri(testCase);
Uri uriBase = new Uri(urlBase);
if(uriTestCase.Segments.Length > uriBase.Segments.Length)
{
System.Console.Out.WriteLine(uriTestCase.Segments[uriBase.Segments.Length]);
}
else
{
Console.Out.WriteLine("No child segment...");
}