我寫了一個正則表達式,將文件路徑解析爲不同的組(DRIVE,DIR,FILE,EXTENSION)。正則表達式匹配需要很長時間才能執行
^((?<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?!??????";
=> BUG
測試當我稱這部分代碼時凍結
Match match = s_fileRegex.Match(path);
當我查看我的Process Explorer時,發現處理器的100%掛起了進程QTAgent32.exe。這是什麼意思 ?
您在驗證之前是否考慮過[解析路徑](http://stackoverflow.com/questions/3386258/parsing-a-given-path-in-c)? – kennytm 2010-08-04 07:44:08
爲什麼不在Path類中使用有用的方法?沒有必要使用正則表達式來提取這些信息。 – Jens 2010-08-04 07:46:28
RegEx真的是走錯路。我仍然想知道爲什麼這RegEx殺死regexr.com:> – atamanroman 2010-08-04 07:48:02