我编写了一个正则表达式,将文件路径解析为不同的组(驱动器、目录、文件名和扩展名)。
^((?<DRIVE>[a-zA-Z]):\\)*((?<DIR>[a-zA-Z0-9_]+(([a-zA-Z0-9_\s_\-\.]*[a-zA-Z0-9_]+)|([a-zA-Z0-9_]+)))\\)*(?<FILE>([a-zA-Z0-9_]+(([a-zA-Z0-9_\s_\-\.]*[a-zA-Z0-9_]+)|([a-zA-Z0-9_]+))\.(?<EXTENSION>[a-zA-Z0-9]{1,6})$))
我在C#中进行了一项测试。当我想要测试的路径是正确的时,结果非常快,这正是我所期望的。
string path = @"C:\Documents and Settings\jhr\My Documents\Visual Studio 2010\Projects\FileEncryptor\Dds.FileEncryptor\Dds.FileEncryptor.csproj";
=> OK
但是当我尝试用一个不匹配的路径进行测试时,就像这样:
string path = @"C:\Documents and Settings\jhr\My Documents\Visual Studio 2010\Projects\FileEncryptor\Dds.FileEncryptor\Dds.FileEncryptor?!??????";
=> 错误
当我调用这部分代码时,测试会卡住。
Match match = s_fileRegex.Match(path);
当我查看我的进程管理器时,我发现QTAgent32.exe进程占用了100%的处理器。这是什么意思?