正则表达式 - 对于书籍,包含“NAME-NAME”但分为“ - ”

时间:2015-01-21 10:52:12

标签: regex

我正在尝试对我的电子书进行排序,但我遇到了一个问题,其中作者的名字包含 - 但我用它将它分成作家 - 标题。关于如何创建一个组(?)的任何建议,说它不能是“ - ”但它可以是“\ w- \ w”

^(\[([a-zA-Z0-9 ,&]+)\] ?)?((?P<writer>([^\-_0-9]+)(?=\s*-\s*)(?!\s*-\s*[0-9.]+)|\b))( \s*-\s* )(\[(?P<serie>[a-zA-Z0-9 ,'&]+[^\s0-9.]{1,}?)(?=\s*)?(-?\s?)?(\#\s?)??(?P<serie_index>[0-9.]+)\](\s*-\s*)?)?(\s)?(?P<title>[a-zA-Z0-9 .,'&]+)

Regular expression visualization

Debuggex Demo

- 编辑 - 弹出一个问题,如果一个系列名称中有一个数字,我该怎么把它拆分到最后一个数字?

Simon, Will - [kamer 11901] Moord in Eldorado
Simon, Will - [kamer 119 02] Moord in de Stopera

1 个答案:

答案 0 :(得分:1)

您可以尝试使用此正则表达式:

(?:\[[^\]]*\]\s*)?(?P<writer>.*?,.*?)(?:\s+-\s*|\s*-\s+)(?:\[\s*(?P<serie>.+?)\s+(?P<serie_index>\d+)\]\s*)?(?P<title>.*)

如果短划线旁边没有空格,则会考虑作者姓名的短划线部分。

regex101 demo.