2013-11-20 3 views
2

Хорошо здесь является регулярное выражение:Я не понимаю, почему это регулярное выражение всегда возвращает false?

Match CMD = Regex.Match(CommandString, @"\(([a-z0-9]+);(INTEGER|DECIMAL|STRING);(d{1,3});(((YES|NO);){3})([a-z0-9]+)\)", RegexOptions.IgnoreCase); 

if (CMD.Success){ 
    return true; 
} 
return false; 

следующие модели должны вернуться верно:

(ID;Integer;12;YES;YES;YES;0) 

(weak;String;5;NO;YES;YES;super) 

(fabris345;decimal;23;YES;YES;YES;0) 

(expr12nd;String;455;NO;YES;NO;super1000) 

, но они всегда возвращают ложь. Зачем?

+1

'A-Za-z' - WEIRD RANGE. – Mat

+0

Боковое примечание: вам нужно только '[a-z0-9]', если вы задали 'IgnoreCase' –

+0

@Mat ok Я исправил это, но все же возвращает false –

ответ

5

... (d {1,3}) ... должно быть (\ d {1,3})

+0

Это определенно * проблема *. – user2864740

+0

Стреляй, я пропустил это ... –

Смежные вопросы