通过正则表达式转换字符串

时间:2014-09-25 13:10:40

标签: c# regex

有没有办法转换像

这样的字符串
http://blar1.s3.shamazonaws.com/ZZ/bstd-20140801-004000-0500.time.gz

C:\Temp\2014\08\

使用单个正则表达式?

有很多文件需要定期下载,我需要将这些文件存储在按年和月组织的直接结构中。它们在名称上都有相同的日期部分 - 例如" 20140801-004000-0500"在我的例子中,链接的其他部分可能不同。

1 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式:

^                 # start of the string
.+-               # match everything until the first hyphen
(?<year>\d{4})    # capture the first four digits into a group named year
(?<month>\d{2})   # capture the next two digits into a group named month
(?<day>\d{2})     # you get the idea...
-.+$              # match everything else until the end of the string

以下剪辑应该做的工作:

string strRegex = @"^.+-(?<year>\d{4})(?<month>\d{2})(?<day>\d{2})-.+$";
Regex myRegex = new Regex(strRegex, RegexOptions.None);
string strTargetString = @"http://blar1.s3.shamazonaws.com/ZZ/bstd-20140801-004000-0500.time.gz";
string strReplace = @"C:\Temp\${year}\${month}";

return myRegex.Replace(strTargetString, strReplace);