给定一个十进制数字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)