为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

largeQ 2018-08-13 06:10:23
最近在学习正则表达式,在测试练习的时候遇到了一个下面图片中的问题,就是要匹配所有 质数个 字符,就是需要匹配下面图片左边所有的字符串,不能匹配右边所有的字符串。有没有大神给出一个正确的正则表达式匹配规则。去找了一下 参考答案:为^(?!(..+)\1+$)。 或者解释一下这个答案的正则表达式的意思。
查看完整描述

1 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

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

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

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

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


查看完整回答
反对 回复 2018-08-24
  • 1 回答
  • 0 关注
  • 802 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信