0

我正在尝试将我的 calibre (calibre-ebook.com) 设置为自动从导入的 pdf 文件中获取数据到库中。通常我这样命名我的文件:

作者。标题。当地的。出版商。发表。国际标准书号.pdf

例子:

C:\Test\RANCIÊRE,雅克。哦,无知的老师。贝洛奥里藏特。奥特蒂卡。2010. 978-85-7526-045-6.pdf


我一直在尝试获取第一个参数:作者,使用正则表达式:

([^\\]+)\.

我得到这个值:

朗西尔,雅克。哦,无知的老师。贝洛奥里藏特。奥特蒂卡。2010. 978-85-7526-045-6


由于从左到右读取的正则表达式不会在.?的第一个点(.)处停止。

此示例的所需值为:

朗西尔,雅克

其他领域的任何提示?标题示例所需的值为:

哦,无知的老师

谢谢指教!!!

4

2 回答 2

0

正则表达式捕获是贪婪的,这意味着它试图获得尽可能大的匹配。尝试非贪婪版本:

([^\\]+?)\.

请注意,唯一的区别是添加了?.

之后,您应该可以使用\1.

于 2013-11-20T07:41:23.017 回答
0

^.+?\.会给你C:\Test\RANCIÊRE, Jacques.

这意味着获取第一个点之前的所有字符。

如果您只想RANCIÊRE, Jacques使用:

(?!(.*\\))(.+?\.)

会给你RANCIÊRE, Jacques.

于 2013-11-20T07:43:02.043 回答