代码之家  ›  专栏  ›  技术社区  ›  Gimly

定义备份文件名格式的正则表达式

  •  0
  • Gimly  · 技术社区  · 15 年前

    在我目前正在使用的应用程序中,我可以选择在硬盘上创建某个文件的自动备份。我想做的是为用户提供配置文件名及其扩展名的可能性。

    例如,备份文件名可能类似于:“backup_month_year_username.bak”。我想把格式保存为正则表达式的形式。对于上面的示例,regexp如下所示:

    "^backup_(?<Month>\d{2})_(?<Year>\d{2})_(?<Username>\w).(?<extension>bak)$"
    

    我考虑过使用regex,因为我还需要浏览备份文件的目录来删除那些早于某个日期的文件。我现在遇到的主要问题是如何使用regex创建文件名。在某种程度上,我应该用信息替换标签。我可以用regex.replace和另一个regex来实现这一点,但我觉得这样做很奇怪,而且可能是更好的方法。

    谢谢

    [edit]也许我在第一次行动中并不十分清楚,但我的想法是用户(在本例中是了解regex语法的管理员)当然可以修改文件名的格式,这就是它背后的全部想法[/edit]

    5 回复  |  直到 15 年前
        1
  •  1
  •   Bart Kiers    15 年前


    backup_%m_%y_%u.bak
    

        2
  •  1
  •   Thorsten Dittmar    15 年前


    \w

    "^backup_(?<Month>\d{2})_(?<Year>\d{2})_(?<Username>\w+)\.(?<extension>bak)$"

        3
  •  0
  •   Noon Silk    15 年前

    string.Split

        4
  •  0
  •   Polyfun MicBehrens    15 年前

        5
  •  0
  •   Gimly    15 年前

    Regex rgx = new Regex("\(\?\<Month\>.+?\)");
    rgx.Replace("^backup_(?<Month>\d{2})_(?<Year>\d{2})_(?<Username>\w+)\.(?<extension>bak)$"
    , DateTime.Now.Month.ToString());