[英]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.