Python中的正则表达式实现素数函数(源自Perl)
我看过一篇文章,里面提到了一种用 Perl 语言写的正则表达式 /^1?$|^(11+?)\1+$/
,这个表达式用来检查一个数字是不是质数。
处理步骤:
s = '1' * your_number
如果 s
符合这个正则表达式,那就说明这个数字不是质数。如果不符合,那就是质数。
你怎么把这个正则表达式转换成 Python 的 re
模块呢?
1 个回答
6
这个代码可以直接使用(除了两边的斜杠,这在Python中是不需要的):
pattern = r'^1?$|^(11+?)\1+$'
re.match(pattern, '1'*10) #matches
re.match(pattern, '1'*11) #doesn't match
这里唯一需要的非标准正则表达式特性是回溯引用(\1
),这个在Perl和Python中都是支持的。