Regex-Golf

A man, a plan:

  判断回文,如果不确定串长度情况下可以考虑利用反向引用构造pattern,例如: (.)\1  , (.)(.)\2\1 , (.)(.)(.)\3\2\1 ...但这里只需要判下前后两个char就好了。

^(?:(.)(.).*\2\1)$

 

Prime :

  判断元素个数是不是素数,是的话匹配成功否则失败。一开始写了个大暴力pattern A掉了。后来看到正解真是叹为观止= =,长这个样子: 

^(?!(..+)\1+$)

  换句话说就是如果一个数可以表示为 n=k*x ,x>=2,k>=2,那就会匹配失败。

  一开始以为  ^(?!(..+){2,}$) 也应该是对的,但是一直W,原因在于\1是对前面的引用,二者内容一致,(引用的是文本内容而并非表达式)但是(..+){2,}的话等价于多个(..+),而这个东西的表示是不唯一的,所以这样写是错的。

posted @ 2019-01-04 15:12  *zzq  阅读(241)  评论(0编辑  收藏  举报