分享人:张庆东
1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
发明BSD、TCP/IP、csh、vi和NFS的SUN首席科学家Bill Joy说过,在计算机体系结构领域里,缓存是唯一称得上伟大的思想的。其他的一切发明和技术不过是在不同场景下应用这一思想而已。在计算机软件领域里,情形也大体相似。如果罗列这个领域的伟大发明,绝对不超过二十项。这些包括分组交换网络、WEB、lisp、哈希算法、UNIX、编译技术、关系模型、面向对象、XML这些大名鼎鼎的家伙,而正则表达式绝对不应该被漏掉。
如今正则表达式已经成为几乎所有语言中的必备元素:JAVA、Perl、Python、PHP、Ruby————我们要问的不是什么语言支持正则表达式,而是什么语言不支持正则表达式。而一些功能强大的编辑器如notepad++、sublime 、Atom也全都支持正则表达式。正则表达式究竟能干什么呢?为什么会有那么大的魅力?我们往下看
今天小课堂的内容不是正则表达式教学,而是了解懂得简单的正则表达式后我们能做什么。因此正则表达式的语法我们只讲后面简单的几个,如果我讲的不清楚可以打字或开麦让我再讲一下。若有想深入学习正则表达式的师兄师弟,可以去看我小课堂结束后发出的资料
元字符:起匹配、标记作用的特殊字符
匹配:将符合的结果返回,相当于return ...
标记:将符合的结果作为条件,相遇if(...)
下面我们一边演示一边讲
"\b"     标记的单词的开头和结尾
即是空格、逗号、句号等符号
"\d"     匹配的是[0-9]的任一个数字
"{}"     "X{3}"表示匹配连续的3个X
“.”     匹配的是除了换行符“\n”的任意一个字符
"*"     "X*"可以表示0个或无数个X
“\s”     表示匹配一个空格
"\S"     表示匹配一个不是空格的任意字符
零宽断言(标记类型,不返回结果)
(?=check)     “X(?=check)”如果X后面跟着check,则匹配X()
(?<=check)     "(?<=check)X"如果X前面有check,则匹配X
注:check可以是任何你写的出的东西
1.读不懂,也不想读正则表达式怎么办?
2.正则表达式的标准并不统一,JAVA上能用的Python并不一定能用,怎么办?
1.读不懂,也不想读正则表达式怎么办?
普通人有三件东西看不懂:医生的处方,道士的鬼符,程序员的正则表达式
哪怕是一个精通正则表达式的人要读懂一大段正则表达式也很费力,因为正则表达式是只写的(write-only)。很多时候,写完三分钟,立马就不读懂了
但是——非要读不可的话,可以使用可视化工具
https://www.debuggex.com/
刚才演示用的神器————RegexBuddy
2.正则表达式的标准并不统一,JAVA上能用的Python并不一定能用,怎么办?
神器regexBuddy再次出场!具有不同语言间的正则表达式互相转换功能,甚至还能帮你直接把实现正则表达式的代码写出来!
1.博客http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html
2.《精通正则表达式》
今天的分享就到这里啦,欢迎大家提问和探讨!