当前 NTUSER.DAT 个文件的正则表达式

Regex for Current NTUSER.DAT files

我正在尝试提出一个正则表达式 (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

目前我的 best/simplest 正则表达式是:

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

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

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

好吧,假设你有一个有效的文件列表,这会起作用:

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

确保忽略大小写。

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