正则表达式并没你想的那么难(一)
前言
上大学的时候,总觉得正则表达式难极了,看一点就头昏眼花高血压。于是始终都没有好好去学过正则表达式。
后来成了程序员,觉得正则表达式是一装逼利器。可是让我这个菜鸟程序员看起来并不那么菜鸟。
于是去看书,去找视频。书看的是某本xxx4.0从入门到精通。后来的看的是杨中科老师的视频。总共讲了十几个视频吧。杨老师讲课风趣幽默倒是真的。期间还跟着视频做了正则表达式从某美女图片网站一键下载页面全部图片的小程序。一点点慢慢从理解到写demo,再到后来项目中url重写第一次在工作中用到正则。慢慢的开始熟悉了。前后加起来不过半个多月的时间。说半个多月是因为我并没有苦心专研。因为我基本每天只看两个学习的视频然后写点自己想到可以应用的小例子就开始看电视剧去了
正文
首先正则表达式干嘛用的呢。没错就是用来匹配字符串的。记得数据库中的like关键字吗关键字中的like ‘%a%’中的’%a%’其实就是一个类正则表达式。%是一个通配符。那么正则表达式中的有哪些类似的这种符号呢?
. 可以匹配所有字符,类似于上例中的%吧
\d ,[0-9]可以匹配一个数字,
根据[0-9]举一反三同理可得[a-z],[A-Z]表示什么你们应该猜到了吧。没错小写和大写。
正则表达式还可以这样[0-9]你想让他不仅匹配字符串,同时也支持匹配数字怎么办呢,往里面加啊,[0-9a-z],你说这[a-z]只匹配小写么,再加个[0-9a-zA-Z],想要什么往里面加就是了,加量不加价。
\w可以匹配一个汉字,下划线,大小写字母,数字。
\s可以匹配一个空格
有人说我想只匹配 . 怎么办呢,这时候就有个转义符了,斜杠 \。嘿嘿转一下\.就行啦,举一反三同理得出,\\表示一个斜杠,其他的小伙伴们自己去举一反三吧。
常用就上面这么多吧。我觉得够了吧
或匹配:
A|B 匹配A或者B,当然我习惯性会(A|B),更清晰一些也不会弄错。
那么如果要匹配多个数字咋办呀总不能\d\d\d\d吧,看着就心碎。
a*表示0个或者多个a
a+表示一个或一个以上的a
a?表示a可有可无,即0个或1个a。
a{n,m}表示a可能出现n到m次。
好了剩下的就是把上面的东西用起来。
1:写一个手机号码,假设这个数字第二位可能是3,5,8,后面的基本都见过吧,
1(3|5|8)(\d){10},
2:写一个邮件地址:
(\w+)@(\w+)\.(com|net) 这里只写一般的邮箱
个人觉得可以写正则表达式的时候分部分写是最佳的。
结尾
这边讲些基础的,下次有时间讲些C#中的用法和正则分组的概念,一方面给供新手们学习,一方面自己也可查阅和复习。我觉得写博客除了可以锻炼自己的思维能力,总结能力,文字表达能力,这方面也是对自己大有裨益的。