相关疑难解决方法(0)

使用正则表达式检查数字可分性

给定一个十进制数字N作为一个数字字符串,如何通过M 仅使用正则表达式检查它是否可被整除,而不转换为int?

M = 2,4,5,10是显而易见的.对于M = 3,这里有一些有趣的见解:正则表达式过滤器数字可被3整除

任何人都可以为M = 7,9,11,13等提供解决方案吗?通用的?

测试代码(在python中,但随意使用任何语言):

M = your number, e.g. 2
R = your regexp, e.g., '^[0-9]*[02468]$'

import re
for i in range(1, 2000):
    m = re.match(R, str(i))
    if i % M:
        assert not m, '%d should not match' % i
    else:
        assert m, '%d must match' % i
Run Code Online (Sandbox Code Playgroud)

对于那些好奇的人,这里有一个例子M=3(假设一个带递归支持的引擎):

^
(
    | [0369]+ (?1)
    | [147] (?1) [258] (?1)
    | [258] (?1) [147] (?1)
    | ( …
Run Code Online (Sandbox Code Playgroud)

regex math

18
推荐指数
3
解决办法
1万
查看次数

标签 统计

math ×1

regex ×1