正则表达式从URL获取文件名

时间:2010-06-13 03:38:23

标签: c#

如果我有一个带有多个网址的文本框

rapidshare.com/files/379028801/foo.bar.HDTV.XviD-LOL.avi

rapidshare.com/files/379182651/foo.bar.720p.HDTV.X264-DIMENSION.mkv

rapidshare.com/files/379180004/foo.bar.720p.HDTV.X264-DIMENSION.part1.rar rapidshare.com/files/379180444/foo.bar.720p.HDTV.X264-DIMENSION.part2.rar rapidshare.com/files/379181251/foo.bar.720p.HDTV.X264-DIMENSION.part3.rar rapidshare.com/files/379181743/foo.bar.720p.HDTV.X264-DIMENSION.part4.rar

我需要一个文件名及其网址

textbox2.text =

foo.bar.HDTV.XviD-LOL.avi

从这里开始 rapidshare.com/files/379028801/foo.bar.HDTV.XviD-LOL.avi

foo.bar.720p.HDTV.X264-DIMENSION.part1.rar
从这里 rapidshare.com/files/379180004/foo.bar.720p.HDTV.X264-DIMENSION.part1.rar

等等

谢谢:)

4 个答案:

答案 0 :(得分:2)

好吧,你不能只得到最后一个/?

后面的字符串

只需获取带有“LastIndexOf(”/“)+ 1”开头的子字符串,你就可以了,跳过所有正则表达式的东西。这是一个单线解决方案,它更快!

就是这样:

  

String filename = ulr.Substring(url.LastIndexOf(“/”)+ 1);

干杯,

vloo

答案 1 :(得分:1)

这样的事情应该这样做

String flnam = Regex.Match("rapidshare.com/files/379028801/Fringe.S02E19.HDTV.XviD-LOL.avi",
                @".*\/([^/]*)$").Groups[1].Value.ToString();
Console.WriteLine(flnam);

答案 2 :(得分:1)

我可以使用此正则表达式获取文件名

rapidshare.com/files/[0-9]*/(?<name>.*)$

C#代码看起来像,

                string text= textbox1.Text;
                Regex regex = new Regex(@"rapidshare.com/files/[0-9]*/(?<name>.*)$");
                MatchCollection matches = regex.Matches(text);
                if (matches.Count > 0)
                {
                    string fileName = (from Match match in matches
                                       where match.Success
                                       select match.Groups["name"].Value.Trim());
                }

答案 3 :(得分:0)

您应该能够搜索此类正则表达式并将其替换为“”:

rapidshare.com/files/[0-9]*/

例如,在JavaScript中:

var fileName = fullUrl.replace(/rapidshare.com\/files\/[0-9]*\//, "");

请注意,\/会转义/,这会在JavaScript中以其他方式结束正则表达式。