仅当存在多个组时才匹配

时间:2019-08-03 01:34:56

标签: regex

我有以下可能的字符串:

01/08/2019
01/08/2019 Season 2019. 
Season 4. Episode 49 of 134.
Panic Run Season 2. Episode 2 of 12.
我想使用单个正则表达式将其分为几类 例如最后一个字符串应创建3个匹配的组

group1: Panic Run
group2:  Season 2.
group3:  Episode 2 of 12.

我可以使用以下正则表达式

(.+?)(Season.+?\.)(?:.+?)(Episode.+?\.)

但是在没有Episode或Season关键字的那一分钟内失败

如果我放?最后(。+?)(Season。+ ?.)(?:。+?)(Episode。+ ?.)? 如果没有,则覆盖最后一组,但是如果没有Season,则整个表达式都会失败

如果字符串不是从Season开始的,我想捕获组1中的所有内容。 如果存在Season,则从Season开始直到捕获。归入组1或2 如果情节存在,则从情节开始捕获到。进入第2或第3组

1 个答案:

答案 0 :(得分:0)

我猜您可能想设计一个表达式,有点类似于:

(?i)^(\d+\/\d+\/\d+)?(.*?)(\bSeason\s+\d+)?\.?\s*(Episode.+\d)?\.?$

虽然不确定。

该表达式在regex101.com的右上角进行了解释,如果您想探索/简化/修改它,在this link中,您可以观察到它如何与某些示例输入匹配,如果你喜欢。