gpt4 book ai didi

regex - 我可以使用正则表达式来搜索数字的倍数吗?

转载 作者:行者123 更新时间:2023-12-02 02:47:07 37 4
gpt4 key购买 nike

我正在尝试搜索一个大型项目,以查找我声明了大小为 [48] 或 48 的任意倍数的数组的所有示例。

我可以使用正则表达式函数来查找 48 * n 的匹配项吗?

谢谢。

最佳答案

给你(用 PHP 的 PCRE 语法):

^(0*|(1(01*?0)*?1|0)+?0{4})$

用法:

preg_match('/^(0*|(1(01*?0)*?1|0)+?0{4})$/', decbin($number));

现在,为什么它有效:

我们知道 48 实际上只是 3 * 16。 16 就是2*2*2*2。因此,任何能被 2^4 整除的数字在其二进制表示中都会有 4 个最高位 0。因此,以 0{4}$ 结束正则表达式相当于说该数字可以被 2^4(或16)。那么,左边的位需要能被 3 整除。所以使用 this answer 中的正则表达式,我们可以判断它们是否可以被 3 整除。因此,如果整个正则表达式匹配,则该数字可以被 3 和 16 整除,因此是 48...

QED...

(请注意,当 $number 为 0 时,前导 0| 情况会处理失败的匹配)。我已经对从 048^5 的所有数字进行了测试,每次都正确匹配...

关于regex - 我可以使用正则表达式来搜索数字的倍数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4518307/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com