我创建了一个带有书籍的小型数据库,并尝试用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)
您忘记关闭所有已命名的捕获组.
@"(?<tytul>(.*))//(?<autor>(.*))//(?<rok>(.*))$"
^ ^ ^
Run Code Online (Sandbox Code Playgroud)
通过将第一个贪婪量词.*转为非贪婪.*?,可以避免回溯.
@"^(?<tytul>(.*?))//(?<autor>(.*?))//(?<rok>(.*))$"
Run Code Online (Sandbox Code Playgroud)