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

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

  1. Plain Strings 观察一下就发现左边都含有foo,右边都没有,所以简单写成这样就好了
    foo
  2. Anchors 名字就叫锚,直接观察发现以k结尾就行了
    k$
  3. Ranges 名字就叫区间,所以发现要匹配的字符都只有a-f,所以
    ^[a-f]+$
  4. Backrefs 名字就叫反引用,所以发现是某三个字符在后面还会出现,这样
    (...).*\1
  5. Abba 名字就提示了要逆序引用两组,其实这里开始就觉得正则表达式只适合处理那种非常普通,有规则可循的字符串,并且规则有时候看起来简单,但是用正则处理起来就非常麻烦,甚至是不能处理,比如如果这题的限制不仅仅是两个字符逆序,是不定个数的,怎么做?
    ^(?!.*(.)(.)\2\1)
  6. A man, a plane 两到三个字符逆序,中间可以夹杂其他莫名其妙的东西
    ^(.)(.).*\2\1$
  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?$
其他题现在还没找到满意的解法,找到了再公布~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值