解析正则表达式 - (不够)

时间:2015-02-08 02:18:08

标签: c# regex

我创建了一个带有书籍的小型数据库,并尝试在c#中使用正则表达式获取标题,作者和年份,但发生错误。

数据库看起来像这样:

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.

1 个答案:

答案 0 :(得分:8)

您忘记关闭所有已命名的捕获组。

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

DEMO

将第一个贪婪量词.*变为非贪婪.*?会避免backtracking

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