2014-09-25 3 views
1

Есть ли способ, чтобы преобразовать строку какTransform строку регулярным выражением

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

в

C:\Temp\2014\08\ 

с помощью одного регулярного выражения?

Существует множество файлов для загрузки регулятора, и мне нужно хранить эти файлы в структуре directorty, организованной по годам и месяцам. Все они имеют такую ​​же дату в имени - например, «20140801-004000-0500» в моем примере, но другие части ссылки могут отличаться.

+0

Да, вы могли бы извлечь «20140801-004000-0500» значение с помощью регулярных выражений (легко даже для новичков). – AgentFire

ответ

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); 
Смежные вопросы