我创建了一个带有书籍的小型数据库,并尝试在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.
答案 0 :(得分:8)
您忘记关闭所有已命名的捕获组。
@"(?<tytul>(.*))//(?<autor>(.*))//(?<rok>(.*))$"
^ ^ ^
将第一个贪婪量词.*
变为非贪婪.*?
会避免backtracking。
@"^(?<tytul>(.*?))//(?<autor>(.*?))//(?<rok>(.*))$"