用 Regex 來檢查 Prime

2015-02-13 06:58:51 +08:00
 jprovim

/^1?$|^(11+?)\1+$/

來源 原理

2318 次点击
所在节点    分享发现
6 条回复
xjx0524
2015-02-13 09:08:38 +08:00
这个表达式匹配的是非质数个1的串
‘|’ 前面是匹配 ‘’ 和 ‘1’
后面原理是 括号内分组为[2,∞)个1,‘\1+’表示匹配[1,∞)个前面的分组,来达到倍数的目的
FrankFang128
2015-02-13 09:18:43 +08:00
把数字N变成N个棍子,再看能不能完全分组
FrankFang128
2015-02-13 09:19:25 +08:00
Perl 真是。。。
reorx
2015-02-13 09:37:17 +08:00
之前遇到一个题是匹配非质数个字母 x:

http://regex.alf.nu/6

Match:

xx
xxx
xxxxx
xxxxxxx
xxxxxxxxxxx

Not (质数):

xxxx
xxxxxx
xxxxxxxx
xxxxxxxxx
xxxxxxxxxx

最后想半天弄出一个 ^(?!(xx+)\1+$) ,不知道是不是最优解。

另外 lz 这个正则里有个 +? ,有些看不懂,+ 是匹配一个或多个,? 是匹配零或一个,能混用吗?
reorx
2015-02-13 09:38:49 +08:00
车上打字迷糊了……上题是匹配质数个字母 x,Match 那里是质数……
oott123
2015-02-13 09:45:19 +08:00
@reorx 我猜 +? 是懒惰匹配…

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/170635

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX