2015-02-08 7 views
3

Я сделал крошечную базу данных с книгами и пытался получить заголовки, авторы и год книги с регулярным выражением в C#, но произошла ошибка.parsing regex - (Недостаточно)

База данных выглядит следующим образом:

Eragon // Christopher Paolini // 2005 

The Fellowship of the Ring // J. R. R. Tolkien // 1954 

И код:

Regex r = new Regex(@"(?<title>(.*)//" + 
        @"(?<author>(.*)//" + 
        @"(?<year>(.*)$"); 

Ошибка:

parsing "(?<tytul>(.*)//(?<autor>(.*)//(?<rok>(.*)$" - Not enough)'s. 
+0

Это довольно ясное сообщение об ошибке - у вас есть непревзойденные парсеры. Вы открываете шесть групп и только закрываете 3. –

+0

Перейдите на этот сайт (http://www.regexr.com/) и проверьте свое регулярное выражение ... – Marko

ответ

5

Вы забыли закрыть все названные захватив группы.

@"(?<tytul>(.*))//(?<autor>(.*))//(?<rok>(.*))$" 
      ^   ^   ^

DEMO

Поворачивая жадные кванторам .* на первом не-жадный .*? бы избежать backtracking.

@"^(?<tytul>(.*?))//(?<autor>(.*?))//(?<rok>(.*))$"