Регулярные выражения в C # работают медленно

Я немного поработал с регулярным выражением на прошлой неделе и мне удалось добиться большого прогресса, однако я все еще довольно n00b. У меня есть регулярное выражение, написанное на C #:

string isMethodRegex = 
    @"\b(public|private|internal|protected)?\s*(static|virtual|abstract)?"+
    @"\s*(?<returnType>[a-zA-Z\<\>_1-9]*)\s(?<method>[a-zA-Z\<\>_1-9]+)\s*\"+
    @"((?<parameters>(([a-zA-Z\[\]\<\>_1-9]*\s*[a-zA-Z_1-9]*\s*)[,]?\s*)+)\)";
IsMethodRegex = new Regex(isMethodRegex);

По какой-то причине при вызове регулярного выражения IsMethodRegex.IsMatch () оно зависает более 30 секунд на следующей строке:

"\t * Returns collection of active STOP transactions (transaction type 30) "

Кто-нибудь знает, как работают внутренние компоненты Regex и почему это будет настолько медленным при сопоставлении этой строки, а не других. Я поигрался с ней и обнаружил, что если я уберу * и круглую скобку, она будет работать нормально. Возможно, регулярное выражение плохо написано?

Мы будем очень благодарны за любую помощь.

12
задан CajunLuke 4 October 2011 в 01:29
поделиться