Соответствие Regex занимает очень долгое время для выполнения

Я записал регулярное выражение, которое анализирует путь к файлу к другой группе (ДИСК, DIR, ФАЙЛ, РАСШИРЕНИЕ).

^((?<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";

=> ХОРОШО

Но когда я пытаюсь протестировать с путем, что я знаю, что это не будет соответствовать, как это:

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% моего процессора. Что это означает?

5
задан RedPaladin 4 August 2010 в 07:41
поделиться