【问题标题】:Regex for Current NTUSER.DAT files当前 NTUSER.DAT 文件的正则表达式
【发布时间】:2016-04-22 03:47:01
【问题描述】:

我正在尝试提出一个正则表达式 (PCRE),它在循环浏览文件列表时查找当前 Windows NTUSER.DAT 文件(有效的 NTUSER.DAT 是 Windows 使用的正确路径中的文件)。

我正在尝试排除任何已被用户复制并放置在不同位置(例如桌面上)的 NTUSER.DAT 文件。以下样本数据中,前4个结果有效,后3个无效:

\Users\John Thomas Hamilton\ntuser.dat
\Users\Default\NTUSER.DAT
\Users\Mary Thomas\NTUSER.DAT   
\Users\UpdatusUser\NTUSER.DAT
\Users\John Thomas Hamilton\Desktop\My Stuff\Windows\Users\Default\NTUSER.DAT
\Users\John Thomas Hamilton\Desktop\My Stuff\Windows\Users\Student\NTUSER.DAT
\Users\John Thomas Hamilton\Desktop\My Stuff\My stuff to sort\Tech Support Fix it\NTUSER.DAT

目前我拥有的最好/最简单的正则表达式是:

\\USERS\\[A-Z0-9]+\\NTUSER.DAT$

当然,除了字母和数字之外,用户名中还可能存在大量有效的 Windows 文件名字符。

我认为我需要搜索新文件夹“\”的第一次出现,然后如果它后面没有 NTUSER.DAT,则拒绝它。我没有任何运气这样做,所以任何帮助将不胜感激。

【问题讨论】:

    标签: regex pcre


    【解决方案1】:

    假设您有一个有效的文件列表,这将起作用:

    ^\\Users\\[^\\]+?\\NTUSER.DAT$
    

    确保忽略大小写。

    秘诀是使用[^\\]+? 而不是.+?,这样您就可以完全匹配一个文件夹长度。

    【讨论】:

    • 谢谢。效果很好。当你看到它在你面前时,它看起来很简单!
    猜你喜欢
    • 2015-01-01
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    相关资源
    最近更新 更多