首页新闻招聘找找看知识库

正则表达式匹配质数个字符的问题

-1
悬赏园豆:20 [待解决问题]

最近在学习正则表达式,在测试练习的时候遇到了一个下面图片中的问题,就是要匹配所有 质数个 字符,就是需要匹配下面图片左边所有的字符串,不能匹配右边所有的字符串。
图片如下图所示:

有没有大神给出一个正确的正则表达式匹配规则。

去找了一下 参考答案:为^(?!(..+)\1+$)。 或者解释一下这个答案的正则表达式的意思。

BUTTERAPPLE的主页 BUTTERAPPLE | 小虾三级 | 园豆:1666
提问于:2017-12-07 19:20
< >
分享
所有回答(2)
0

觉得这个说的挺好的。

Bluto | 园豆:388 (菜鸟二级) | 2017-12-08 14:47
0

刚看了下,大概解释下答案吧~

  ^,$就不用多说了,一个表开始,一个表结尾

  ?! 表示前瞻,即在开始匹配时,向那些没有匹配到的元素预先看一下,是否符合匹配结果。

  (..+) 这里是一个捕获,后面的 \1引用的就是这里捕获的内容。至于这里为什么不是.+或者...+是因为,质数是从2开始的,而这里也包含了一个被忽略的内容,即字符串长度为0和1时,应先排除掉再使用这个正则。否则对0和1也将判定为质数。

  合起来的意思就是:从2开始,先判断是否为2+2,3+3, 4+4, 5+5,也就是用字符串长度去除以2~string.length,如果整除则不是质数,注意我们前面的否定式前瞻,如果不能匹配,则为质数,返回true。事实上,如果知道字符串长度,只需要从2到根号下字符串长度去除就可以了。

  

铁柱成针 | 园豆:500 (菜鸟二级) | 2017-12-08 15:45
   您需要登录以后才能回答,未注册用户请先注册