正则表达式不规则格式字符串输入

时间:2017-05-17 10:51:45

标签: regex

我有这种格式的字符串:

MY TITLE OF STRING 5 - EP.2
MY TITLE OF STRING 6 - EP.3

但在某些情况下,此规则会跳转,我的字符串会变为这样:

MY TITLE OF STRING 5- EP.2
MY TITLE OF STRING 6-EP.3

这是我的正则表达式

(\d*)\s-\s.*?EP.\s*(\d*)

但仅适用于标准情况。

2 个答案:

答案 0 :(得分:1)

您可以使用\s量词使第一个*匹配出现零次或多次:

(\d+)\s*-\s*EP.\s*(\d+)
       ^

请参阅regex demo

如果您需要在-EP之间尽可能少地匹配任何0 +字符,请在模式中重新插入.*?

(\d+)\s*-\s*.*?EP.\s*(\d+)

答案 1 :(得分:1)

只是为了好玩,因为Wiktor已经给出了一个有效的答案,这个也可以工作:

(\d+)[\s-]+EP\.(\d+)$

<强>解释

(\d+)至少一位数

[\s-]+一个或多个连字符或空格

EP\.接着是EP。

(\d+)$至少一个数字,直到字符串结尾

Demo