繁体   English   中英

正则表达式在第二部分中找到字符串的第一部分?

[英]Regex to find 1st part of string in 2nd part?

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

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

最好的办法是找到标题中带有至少一个字母的序列名称的东西:

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

我只想找到第二部分末尾放在方括号中的字符串的整个第一部分的内容,它可以包含其他信息。

谢谢。

在Notepad ++中可以使用:

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

我不确定它是否可以在python中工作,但是regexp处理器通常非常相似,因此请尝试一下。

您的正则表达式非常接近,您可以对正则表达式进行一些更改,并具有以下功能:

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

工作演示

正则表达式可视化

这将匹配以下字符串:

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

但是,如果您只想将单词与parethese匹配,则可以:

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

工作演示

正则表达式可视化

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM