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

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

https://img.mukewang.com/5b7fcd8800012e9f08790784.jpg

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

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


largeQ
浏览 803回答 1
1回答

MMMHUHU

  ^,$就不用多说了,一个表开始,一个表结尾  ?! 表示前瞻,即在开始匹配时,向那些没有匹配到的元素预先看一下,是否符合匹配结果。  (..+) 这里是一个捕获,后面的 \1引用的就是这里捕获的内容。至于这里为什么不是.+或者...+是因为,质数是从2开始的,而这里也包含了一个被忽略的内容,即字符串长度为0和1时,应先排除掉再使用这个正则。否则对0和1也将判定为质数。  合起来的意思就是:从2开始,先判断是否为2+2,3+3, 4+4, 5+5,也就是用字符串长度去除以2~string.length,如果整除则不是质数,注意我们前面的否定式前瞻,如果不能匹配,则为质数,返回true。事实上,如果知道字符串长度,只需要从2到根号下字符串长度去除就可以了。
打开App,查看更多内容
随时随地看视频慕课网APP