0

我正在尝试编写一个用于 Calibre (python) 的正则表达式,以查找标题括号中包含系列名称的电子书。我有一个自定义列,其中系列名称和标题用“~”分隔,例如:

"The Series~The Book Title (The Series)"

我能想到的最好的方法是找到标题括号中至少有一个系列名称字母的任何内容:

(.+)~.*[\(\1\)].*

我只想找到那些在第二部分末尾的括号中包含整个字符串第一部分的那些,它可以包含额外的信息。

谢谢。

4

3 回答 3

0

这适用于记事本++:

(.+)~[^\(]*\(\1\).*

我不确定它在 python 中的工作方式是否相同,但正则表达式处理器通常非常相似,所以试试看。

于 2016-05-31T14:47:44.220 回答
0

您的正则表达式非常接近,您可以稍微更改一下您的正则表达式并拥有以下内容:

(.+?)~.*[([]\1[)\]].*

工作演示

正则表达式可视化

这将匹配以下字符串:

The Series~The Book Title (The Series)
The Series~The Book Title [The Series]

但是,如果您只想将单词与括号匹配,那么您可以:

(.+?)~.*[(]\1[)].*
or
(.+?)~.*\(\1\).*

工作演示

正则表达式可视化

于 2016-05-31T14:47:52.393 回答
0

感谢您的建议。它们在 python 演示中完美运行,但由于某些未知原因在 Calibre 中无法运行。似乎一个字符是捕获组中最匹配的字符。必须是 Calibre 使用的正则表达式系统的限制。

于 2016-06-01T17:05:08.610 回答