解析正则表达式 - (不足)'s

4

我用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.

这是一个非常清晰的错误信息 - 您有未匹配的括号。您打开了六个组,但只关闭了三个。 - Preston Guillot
转到这个网站(http://www.regexr.com/),测试你的正则表达式... - Marko
1个回答

9

你忘记关闭所有命名捕获组。

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

演示

将第一次贪婪匹配的量词.*变为非贪婪匹配的.*?可以避免回溯

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接