[英]Regular Expression for Binary Numbers Divisible by 5
我想写一个二进制数的正则表达式,可以被5整除。
我已经完成了二进制数的正则表达式,可以被2和3整除,但我找不到一个用于5。
有什么建议?
2^0 = 1 = 1 mod 5
2^1 = 2 = 2 mod 5
2^2 = 4 = -1 mod 5
2^3 = 8 = -2 mod 5
2^4 = 16 = 1 mod 5
2^5 = 32 = 2 mod 5
... -1 mod 5
... -2 mod 5
所以我们有一个1,2,-1,-2模式。 有两个子模式,其中只有数字的符号交替:设n是数字编号,最低有效数字的编号是0; 奇怪的模式是
(-1)^(n)
甚至模式是
2x((-1)^(n))
那么,如何使用呢?
让原始数字为100011,将数字数字分成偶数和奇数两部分。 分别对每个零件数字求和。 将奇数位的总和乘以2.现在,如果结果可以被偶数位的总和整除,则原始数字可以被5整除,否则它不可被整除。 例:
100011
1_0_1_ 1+0+1 = 2
_0_0_1 0+0+1 = 1; 1x2 = 2
2 mod(2) equals 0? Yes. Therefore, original number is divisible.
如何在正则表达式中应用它? 使用正则表达式中的标注函数可以应用它。 标注提供了一种在正则表达式模式匹配过程中临时将控制传递给脚本的方法。
但是,ndn的答案更合适也更容易,因此我建议使用他的答案。
但是,“^(0 | 1(10)*(0 | 11)(01 * 01 | 01 * 00(10)*(0 | 11)) 1) $”匹配空字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.