热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

正则表达式的问题:所有不重复的数位组成的串

如题,我看到一个答案(?!.*?(\d).*?\1.*?$)\d+,试了试,正确。哪位大神可以给讲解一下呢?
如题,我看到一个答案(?!.*?(\d).*?\1.*?$)\d+,试了试,正确。哪位大神可以给讲解一下呢?

14 个解决方案

#1


哎。。。 。。。

#2


?! epr是断言后面不是epr,而epr是.*?(\d).*?\1.*?$,这句话就是查找重复的串
(\d).*?是一个数字串,\1.*?是再跟任意个数字串,\1的意思是引用前面的匹配组,从0开始,但是\0是引用整个串本身。
至于为什么要用*?你可以自己在好好琢磨下。

前面为什么加个.*?,我在琢磨下,也坐等其他人回答。

#3


主要牵涉到正则的回溯过程的细节。
不建议深究。正则太复杂了非常难理解和维护的。

这里是判断yyyy-mm-dd这种格式的,基本上把闰年和2月等的情况都考虑进去了,我记得是远古之前在本论坛看见的。

^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29))$
你难道也想要人解释?

#4


正则很强,但也不是万能的。

#5


引用 2 楼 bbs2241 的回复:
?! epr是断言后面不是epr,而epr是.*?(\d).*?\1.*?$,这句话就是查找重复的串
(\d).*?是一个数字串,\1.*?是再跟任意个数字串,\1的意思是引用前面的匹配组,从0开始,但是\0是引用整个串本身。
至于为什么要用*?你可以自己在好好琢磨下。

前面为什么加个.*?,我在琢磨下,也坐等其他人回答。
对不起,我还是没能理解\1.*?的作用?我单独试这个表达式,并没有匹配成功“再跟任意个数字”这一特性。

#6


呼叫正则大神们来科普。。。 。。。

#7


正则表达式速查 正则表达式举例 正则表达式学习 (4页A4纸) http://download.csdn.net/detail/zhao4zhong1/1808549

#8


引用 6 楼 Liu_peiqi 的回复:
呼叫正则大神们来科普。。。 。。。


应该叫做引用匹配组,比如123abcabc456串,使用正则[1-9]*(abc)\1[1-9]*
那么(abc)就是匹配组1,在正则中用\1表示(注意括号),那匹配组0是什么呢?就是整个串123abcabc456

#9


http://download.csdn.net/detail/xuzhouweihao/7407835

30min让你学会正则表达式,很好的一个教材。

#10


http://blog.csdn.net/taodm/article/details/28680243
好吧,我在博客里专门解释了一下。

#11


引用 10 楼 taodm 的回复:
http://blog.csdn.net/taodm/article/details/28680243
好吧,我在博客里专门解释了一下。
你太棒了

#12


正则表达式不是万能的;
有限状态自动机才是万能的。

#13


引用 12 楼 zhao4zhong1 的回复:
正则表达式不是万能的;
有限状态自动机才是万能的。
AC自动状态机?最近刚好在学

#14


\1.*?, 前面的\1好理解,是引用第一个分组,表示出现了两个相同的字符串,后面的.*?是指匹配任意字符的惰性模式,对于本表达式,这样做可以减少错误匹配回溯的次数,加快匹配效率

推荐阅读
  • 本文介绍了Go语言中正则表达式的基本使用方法,并提供了一些实用的示例代码。 ... [详细]
  • PHP 5.5.31 和 PHP 5.6.17 安全更新发布
    PHP 5.5.31 和 PHP 5.6.17 已正式发布,主要包含多个安全修复。强烈建议所有用户尽快升级至最新版本以确保系统安全。 ... [详细]
  • python模块之正则
    re模块可以读懂你写的正则表达式根据你写的表达式去执行任务用re去操作正则正则表达式使用一些规则来检测一些字符串是否符合个人要求,从一段字符串中找到符合要求的内容。在 ... [详细]
  • 在Linux系统中,find和grep是两个常用的命令,用于文件和文本的查找。本文将详细介绍这两个命令的区别及其常见用法。 ... [详细]
  • Spring 切面配置中的切点表达式详解
    本文介绍了如何在Spring框架中使用AspectJ风格的切面配置,详细解释了切点表达式的语法和常见示例,帮助开发者更好地理解和应用Spring AOP。 ... [详细]
  • 该大学网站采用PHP和MySQL技术,在校内可免费访问某些外部收费资料数据库。为了方便学生校外访问,建议通过学校账号登录实现免费访问。具体方案可包括利用学校服务器作为代理,结合身份验证机制,确保合法用户在校外也能享受免费资源。 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • Nacos 0.3 数据持久化详解与实践
    本文详细介绍了如何将 Nacos 0.3 的数据持久化到 MySQL 数据库,并提供了具体的步骤和注意事项。 ... [详细]
  • WCF类型共享的最佳实践
    在使用WCF服务时,经常会遇到同一个实体类型在不同服务中被生成为不同版本的问题。本文将介绍几种有效的类型共享方法,以解决这一常见问题。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 本文将深入探讨 iOS 中的 Grand Central Dispatch (GCD),并介绍如何利用 GCD 进行高效多线程编程。如果你对线程的基本概念还不熟悉,建议先阅读相关基础资料。 ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • 本文详细解析了ASP.NET 2.0中的Callback机制,不仅介绍了基本的使用方法,还深入探讨了其背后的实现原理。通过对比Atlas框架,帮助读者更好地理解和应用这一机制。 ... [详细]
  • 如何在Eclipse中配置Python开发环境
    本文详细介绍了如何在Eclipse中配置Python开发环境,包括安装PyDev插件和设置Python解释器的步骤。 ... [详细]
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
author-avatar
万源佳威5
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有