我正在尝试提出一个正则表达式(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,请拒绝它。我没有运气这样做,所以任何帮助都会受到赞赏。
答案 0 :(得分:1)
假设你有一个有效的文件列表,这将有效:
^\\Users\\[^\\]+?\\NTUSER.DAT$
请务必忽略大小写。
秘密是使用[^\\]+?
代替.+?
,以便您只匹配一个文件夹长度。