Regex 解析运动成绩的正则表达式

Regex 解析运动成绩的正则表达式,regex,Regex,我试图验证表单字段是否包含排球比赛的有效分数。以下是我所拥有的,我认为它是有效的,但无论如何,我不是正则表达式方面的专家: r'^ *([0-9]{1,2} *- *[0-9]{1,2})((( *[,;] *)|([,;] *)|( *[,;])|[,;]| +)[0-9]{1,2} *- *[0-9]{1,2})* *$' 我使用的是python/django,这对正则表达式匹配并不重要。我也在尝试学习正则表达式,所以一个更优化的正则表达式会很有用 以下是评分规则: 1.可以包含一个或多个

我试图验证表单字段是否包含排球比赛的有效分数。以下是我所拥有的,我认为它是有效的,但无论如何,我不是正则表达式方面的专家:

r'^ *([0-9]{1,2} *- *[0-9]{1,2})((( *[,;] *)|([,;] *)|( *[,;])|[,;]| +)[0-9]{1,2} *- *[0-9]{1,2})* *$'
我使用的是python/django,这对正则表达式匹配并不重要。我也在尝试学习正则表达式,所以一个更优化的正则表达式会很有用

以下是评分规则: 1.可以包含一个或多个有效集合(集合=游戏)结果 2.每个结果必须是dd-dd形式,其中0我认为是您问题的解决方案

str.replace(r"(\d{1,2})\s*-\s*(\d{1,2})", "$1-$2")
工作原理:
(\d{1,2})
捕获一个或两个数字的组。
\s*
查找0个或更多空格。
-
查找-

$1
将内容替换为捕获组1的内容
$2
将内容替换为捕获组2的内容


你也可以看看。

这肯定比我想到的一团糟要简单得多。今天我将根据可能的分数输入的各种排列来测试它。谢谢谢谢这很好:)如果它对你有效,请接受答案,以感谢答案与一些要点;PYour字符串并没有完全取代我的字符串,但它让我找到了一个更好的解决方案:您的字符串并没有完全取代我的字符串,但它让我找到了一个更好的解决方案:首先,我用re.sub('\s+','',myString,'',myString)去除所有空白,然后我使用您的正则表达式的[大部分]对:r'^\d{1,2}-\d{1,2}([,;]\d{1,2}-\d{1,2})验证剥离的表单字段*$'. 谢谢你的帮助!