只匹配可被7整除的数字的正则表达式

2024-10-03 00:26:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个问题,我需要在python中仅使用正则表达式来确定一个数字是否可以被7整除

这就是我想到的:
0 7 14 21 ... 91 98出现的数字是:第一个和第二个为0-9

所有尾随的左数字可以显示任意数量,因此\d*

正则表达式是:\d*\d\d-做了相反的事情,对于不能被7整除的数字,它返回true

例如re.match(theReg, '32780')返回False,我需要它返回True,因此我将整个正则表达式求反到最后一个:

~\d*\d\d    

这在某种程度上适用于所有数字,但同样,相反,对于可被7整除的数字,它返回False

另一个问题:我似乎没有找到任何方法来否定正则表达式,那么~到底是如何完成所有工作的

谢谢


Tags: 方法refalsetrue数量match数字事情
2条回答

制作一个可以确定一个数字是否是7的倍数的正则表达式是肯定存在的,但它可能非常复杂和讨厌。有关更多信息,请查看此处的讨论(Check number divisibility with regular expressions

至于正则表达式~\d*\d\d,它将匹配任何以~开头且至少有2个数字的字符串。我不太确定这个字符串的逻辑

您的程序检查来自re.match(reg,strn)的答案是否与您需要的相同\希望它是一个可被7整除的数字(因此您正在检查输出是否等于数字%7)

这就是你出错的地方,对于任何包含数字的字符串,你的最终正则表达式都不会返回None,因此它当然会“正确”所有包含不能被7整除的数字的字符串,事实上,它会得到你想要的任何结果,答案是Falsy

相关问题 更多 >