我有以下regexp(使用Python语法):
(\d+)x(\d+)(?:\s+)?-(?:\s+)?([^\(\)]+)(?:\s+)?\((\d+)(?:(?:\s+)?-(?:\s+)?([^\(\)]+))?\)(?:(?:\s+)?\(([^\(\)]+)\))?(?:(?:\s+)?-(?:\s+)?([^\(\)]+) \((\d+)\))?
它匹配符合以下形式之一的字符串:
21x04 - Some Text (04)
6x03 - Some Text (00 - Some Text)
6x03 - Some Text (00 - Some Text) (Some Text)
23x01 - Some Text (10) - Some Text (02)
数字和文本各不相同,并被捕获。但是,间距并不总是一致的,因此它的设计允许任何数量的空间。你知道吗
有没有一种简化的方法——我不一定要求别人帮我做这件事,只是告诉我是否有工具(谷歌搜索产生了一些结果,但没有一个能处理),或者有一个系统的方法来做这件事。你知道吗
或者有人能找到一个更好的正则表达式来适应这种情况吗?你知道吗
您可以放弃一些可选的非捕获组,例如,您可以更改以下内容:
对此:
Working demo
我可以用
\W*
替换一些(?:\s+)?
,而且您不必在字符类中转义括号[^\(\)]
您可以使用[^()]
顺便说一句,您也可以测试这个正则表达式,它可能对您有用:
Working demo
为了简化这个问题,可以考虑把它分成两部分:1。获取字符串(可以包含数字或字母)和2。当字符串包含数字时获取数字:
相关问题 更多 >
编程相关推荐