Преобразовать строку с помощью регулярного выражения

1

Есть ли способ преобразовать строку как

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

в

C:\Temp\2014\08\

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

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

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

1 ответ

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);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню