加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

regex.alf.nu 正则表达式题解

发布时间:2020-12-14 01:58:36 所属栏目:百科 来源:网络整理
导读:人人上看到有人分享这个,玩了两下觉得好有意思,我自己也还没玩通,边玩边写吧。 Plain Strings 观察一下就发现左边都含有foo,右边都没有,所以简单写成这样就好了 foo Anchors 名字就叫锚,直接观察发现以k结尾就行了 k$ Ranges 名字就叫区间,所以发现要

人人上看到有人分享这个,玩了两下觉得好有意思,我自己也还没玩通,边玩边写吧。

  1. Plain Strings 观察一下就发现左边都含有foo,右边都没有,所以简单写成这样就好了
    foo
  2. Anchors 名字就叫锚,直接观察发现以k结尾就行了
    k$
  3. Ranges 名字就叫区间,所以发现要匹配的字符都只有a-f,所以
    ^[a-f]+$
  4. Backrefs 名字就叫反引用,所以发现是某三个字符在后面还会出现,这样
    (...).*1
  5. Abba 名字就提示了要逆序引用两组,其实这里开始就觉得正则表达式只适合处理那种非常普通,有规则可循的字符串,并且规则有时候看起来简单,但是用正则处理起来就非常麻烦,甚至是不能处理,比如如果这题的限制不仅仅是两个字符逆序,是不定个数的,怎么做?
    ^(?!.*(.)(.)21)
  6. A man,a plane 两到三个字符逆序,中间可以夹杂其他莫名其妙的东西
    ^(.)(.).*21$
  7. Prime 大招来了,之前想都没想过正则表达式还能拿来检测质数。想了半天没一点思路,然后查到一个解法瞬间被治愈了,正则表达式太漂亮了。解法是质数本身的限制,质数是非合数,合数是可以分解成两个大于1的数相乘的数,而且这道题本身就是让你找出由奇数个x组成的字符串,而不是让你找出奇数(这个的写成“x”*n也就解决了,但是超出正则的能力了吧)。然后乘法的意义是什么?a*b不就是表示b个a么?那我分组绑定一个a然后重复b次不就完了?这里要求两个数都大于1,那我a是由至少两个x组成,分组重复至少两次不就好了?
    ^(?!(xx+)1+$)
  8. Four 相比上一题这题好无聊啊,一个字符间隔出现四次,中间间杂有且仅有一个其他字符
    (.).1.1.1
  9. Order 从这题开始,觉得出题者的意图就是想读者展示正则表达式的无力,提示就一个Cheat.那我就正大光明的作弊了,一想到英语里面出现最多的字符是e,既然是要保持顺序,那就由e分开吧
    ^[a-e]*[f-z]*$
  10. Triples 这题知道解法,但是写起来太麻烦了,画一个状态图就知道要这么做了。还在优化中,暂且不给解法。
  11. Power 这题也是挺无奈的,本来的想法是2的阶乘就是每次翻倍吧,然后反引用一次括起来再反引用就翻倍了,但是这样要写10个括号,好蛋疼,后来发现分部来就好了,像这样的话只需要三次翻倍,x是0次方,可以覆盖0123,x{8}是3次方,可以覆盖3456,然后x{128}是7次方,可以覆盖789和10,所以就覆盖完了
    ^(((x|x{8}|x{128})3?)2?)1?$
其他题现在还没找到满意的解法,找到了再公布~

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读