【发布时间】:2016-12-15 18:51:06
【问题描述】:
抱歉问题标题不好,我想不出更好的问题。
我需要一个正则表达式,用于提取电视节目脚本的季节、剧集和标题。在我的文件中,它们可能如下所示:
<span class="topic">01x02 - The Big Bran Hypothesis</span><b
<td><b>01x07 - The Dumpling Paradox</b></td>
<title>Transcripts - Forever Dreaming :: 01x07 - The Dumpling Paradox - The Big Bang Theory</title>
<title>Transcripts - Forever Dreaming :: 06x04 - The Re-Entry Minimisation - The Big Bang Theory</title>
我试过了:
([\d]+x[\d]+)\s?[-]?\s?([\w\s]*)
此正则表达式匹配:
01x02 - The Big Bran Hypothesis
01x07 - The Dumpling Paradox
01x07 - The Dumpling Paradox
06x04 - The Re
我面临的问题是,如何在没有" - The Big Bang Theory" 的情况下获得最后一个标题的其余部分(“The Re-Entry Minimisation”)。
我尝试在第二个捕获组中添加-,但这也包括标题后面的部分。
我还尝试为- 添加一个积极的前瞻,但这也行不通,因为它也匹配了季后的第一个-。
我想如何做到这一点很简单,但我无法弄清楚。任何人的想法?谢谢!
【问题讨论】:
-
这也与“ - 生活大爆炸”部分相匹配。第四场比赛例如应该是“06x04 - The Re-Entry Minimisation”,而不是“06x04 - The Re-Entry Minimization - The Big Bang Theory”
-
正则表达式应该应用于纯文本。是的,你可能会使用
(\d+x\d+)\s?-?\s?([^-<]*(?:\b-\b[^-<]*)*),但它真的很难看。 -
我想出了
([\d]+x[\d]+)\s?[-]?((\s?\w+-?)+)- 似乎适用于该示例,但我敢打赌它不适用于所有其他用例。对这个不满意。
标签: regex