我正在尝试创建一个用于提取标题,副标题和发布者的正则表达式。我想知道如何使字幕搜索可选。
我的格式是:
Title-(Subtitle)-[Publisher]
其中:
例如:
Programming.in.Python.3-(A.Complete.Introduction.to.the.Python.Language)-[Addison-Wesley]
Learning.Python-[O'Reilly]
Flask.Web.Development-(Developing.Web.Applications.with.Python)-[O'Reilly]
现在,我有一个正则表达式(see online)将捕获第一个和第三个:
(.*)-\((.*)\)-\[(.*)\]
我的问题是,我不知道如何构建一个与第二行匹配的正则表达式(第一组中的标题,第二组应该为空,第三组是发布者)如果它是没有在括号中括起来的副标题。这可以在一个正则表达式中完成吗?
答案 0 :(得分:3)
只需使用?
(.*?)-(?:\((.*?)\)-)?\[(.*?)\]
^^^ ^^
此外,我已将.*
替换为.*?
以避免贪婪。