正则表达式用于在\(反斜杠)和第一个之间获取数据。 (点)

时间:2013-11-20 07:39:08

标签: regex pdf syntax format calibre

我正在尝试设置我的口径(calibre-ebook.com)以自动从导入的pdf文件中获取数据到库中。 通常我用这种方式命名我的文件:

作者。标题。本地。出版商。发布时间。 ISBN.pdf

示例:

C:\ Test \RANCIÊRE,雅克。 O mestre ignorante。贝洛奥里藏特。 AUTENTICA。 2010. 978-85-7526-045-6.pdf


我试图获得第一个参数:作者,使用正则表达式:

([^\\]+)\.

我得到了这个值:

RANCIÊRE,雅克。 O mestre ignorante。贝洛奥里藏特。 AUTENTICA。 2010. 978-85-7526-045-6


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

此示例中的所需值为:

RANCIÊRE,Jacques

对其他字段的任何提示?标题的示例所需的值是:

O mestre ignorante

感谢您的建议!!!

2 个答案:

答案 0 :(得分:0)

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

([^\\]+?)\.

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

之后,您应该能够使用\1检索作者的姓名(“RANCIÊRE,Jacques”)。

答案 1 :(得分:0)

^.+?\.会为您提供C:\Test\RANCIÊRE, Jacques.

表示在第一个点之前获取所有字符。

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

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

会给你RANCIÊRE, Jacques.