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

Dzi*_*buz 4 c# regex

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

数据库看起来像这样:

Eragon // Christopher Paolini // 2005

The Fellowship of the Ring // J. R. R. Tolkien // 1954
Run Code Online (Sandbox Code Playgroud)

和代码:

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

错误:

parsing "(?<tytul>(.*)//(?<autor>(.*)//(?<rok>(.*)$" - Not enough )'s.
Run Code Online (Sandbox Code Playgroud)

Avi*_*Raj 8

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

@"(?<tytul>(.*))//(?<autor>(.*))//(?<rok>(.*))$"
               ^               ^             ^
Run Code Online (Sandbox Code Playgroud)

DEMO

通过将第一个贪婪量词.*转为非贪婪.*?,可以避免回溯.

@"^(?<tytul>(.*?))//(?<autor>(.*?))//(?<rok>(.*))$"
Run Code Online (Sandbox Code Playgroud)