C# 用正则表达式转换字符串

C# 用正则表达式转换字符串,c#,regex,C#,Regex,有没有一种方法可以像字符串一样进行转换 http://blar1.s3.shamazonaws.com/ZZ/bstd-20140801-004000-0500.time.gz 到 使用单一正则表达式 有很多文件需要定期下载,我需要将这些文件存储在按年份和月份组织的directorty结构中。它们的名称中都有相同的日期部分,如我这里的示例中的“20140801-004000-0500”,但链接的其他部分可能不同 您可以使用此正则表达式: ^ # start of

有没有一种方法可以像字符串一样进行转换

http://blar1.s3.shamazonaws.com/ZZ/bstd-20140801-004000-0500.time.gz

使用单一正则表达式


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

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

^                 # 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
^#字符串的开头
.+-#匹配所有内容直到第一个连字符
(?\d{4})#将前四位数字捕获到名为year的组中
(?\d{2})#将下两个数字捕获到名为month的组中
(?\d{2})你明白了。。。
-.+$#匹配所有其他内容,直到字符串结束
以下剪下的部分应能完成此工作:

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);
string stregex=@“^.+-(?\d{4})(?\d{2})(?\d{2})-.+$”;
Regex-myRegex=新的Regex(strRegex,RegexOptions.None);
字符串strTargetString=@”http://blar1.s3.shamazonaws.com/ZZ/bstd-20140801-004000-0500.time.gz";
字符串strReplace=@“C:\Temp\${year}\${month}”;
返回myRegex.Replace(strTargetString,strReplace);
是的,您可以使用正则表达式提取“20140801-004000-0500”值(即使是新手也很容易)。
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);