Проблема регулярного выражения ASP.Net для жадных квантификаторов

У меня есть приложение asp.net, где строка создается следующим образом.

string abc;
abc="vindo|vindo|vind?40|vind?40|vincent van uden|vilm|vilm|slim?new|compas|*|darkc?loud";

Regex ABCRegex = new Regex(abc);

but It throws error.
   at System.Text.RegularExpressions.RegexParser.ScanRegex()
   at System.Text.RegularExpressions.RegexParser.Parse(String re, RegexOptions op)
   at System.Text.RegularExpressions.Regex..ctor(String pattern, RegexOptions options, Boolean useCache).

Я знаю, что причина в том, что *, +, ?, {num, num} являются «жадными квантификаторами».

но есть ли способ создать RegEx, используя ту же строку, или можно ли заменить эти жадные квантификаторы другими символами?

Я не хочу менять свою строку.


person ravidev    schedule 24.11.2011    source источник
comment
Это не имеет ничего общего с жадностью, просто у вас есть квантификатор (*), который ничего не измеряет. Если вы хотите сопоставить буквальное *, вам нужно избежать его, как продемонстрировал @Aziz.   -  person Alan Moore    schedule 24.11.2011


Ответы (2)


Попробуйте эту строку:

abc = @"vindo|vindo|vind?40|vind?40|vincent van uden|vilm|vilm|slim?new|compas|\*|darkc?loud";
person Aziz Shaikh    schedule 24.11.2011
comment
Просто для подтверждения я добавил @ и "\". Я не получаю исключения после того, как добавил эти два в ваш код. - person Aziz Shaikh; 24.11.2011

Просто удалите |* из вашего регулярного выражения или замените его на |.*, но это не имеет смысла. Совет: используйте Regulator для отладки RegEx.

person Pavel Korsukov    schedule 24.11.2011