正则表达式,在平常开发中还是会用到一些,真正要学习这门语言也是有点难度,但在日常开发中如果会一点正则,你会有意想不到的效果,对我们开发的效率也有一定提高。
刚开始我一直想学习一些简单的正则,但每次看完一些资料当时好像明白怎么回事,但过一段时间没用又忘了,其实说到底就是自己就根本没掌握好,加上又没去实践(主要原因),当时理解了,一段时间不用自然就忘了。所以说学到的知识还是需要用起来,这样才能加深理解,也不容易忘记。
下面主要说一下正则表达式的基本运用,一些复杂的正则可能需要自己去花些时间系统的学习一番才行,这里只介绍一些入门的知识。
刚开始学习正则,测试正则是否正确以及检验是否是你想要的效果可以去下面这个网址里面,以下的正则都是在里面进行测试的,地址如下:
https://regex101.com/
基本匹配
这是最简单的正则,也就是平常我们习惯的搜索,根据指定字符去文本中搜索完全匹配的结果。
1.”dee” 表示完全匹配 dee 字符
Regular expressions are adeep language.
2.”deep” 表示完全匹配 deep 字符
Regular expressions are adeeplanguage.
正则中的元字符
以下面这句话为例,大致说明一下上面表格中的元字符的使用:
1.”e.” 表示匹配 e 字符后面接上任意一个字符,包括空格,由于空格不好标出,注意下面 are 后面的空格
Regularexpressions area deep language.
2.”e[g,x,e]” 表示匹配 e 字符后面接上包含在中括号中的任意一个字符
Regularexpressions are a deep language.
3.”e[^g,^x,^e]” 表示匹配 e 字符后面接上不包含在中括号中的任意一个字符,这里需要注意的是中括号中不能既加上包含字符,又加上不包含的字符,也就是不能这样写:”e[g,^x,^e]” 这样匹配出来的结果和第二条匹配的结果一致,如果是把不包含的字符写在前面的话:”e[^g,x,e]” 这样匹配的结果则和下面的结果一致,下面注意 are 后面的空格
Regular expressions area deeplanguage.
4.”e[s]*” 表示匹配 e 字符后面接上包含中括号中 s 字符任意次,包括 0 次,就是后面也可以没有字符,下面用不同颜色标明表示只匹配到一个字符
Regularexpressions area deep language.
5.”e[s]+” 表示匹配 e 字符后面接上包含中括号中 s 字符 1次或多次,就是最少要出现一次
Regular expressions are a deep language.
6.”e[s]?” 表示匹配 e 字符后面接上包含中括号中 s 字符 0 次或 1 次,就是可有可无,注意和第 4 个的区别,下面用不同颜色标明表示只匹配到一个字符
Regularexpressions area deep language.
7.”e[s]” 表示匹配 e 字符后面接上包含中括号中 s 字符 2 到 3 次,次数在大括号中指定,可以是一个固定数字,也可以是一个范围
Regular expressions are a deep language.
8.”(ee)” 表示匹配 ee 这个字符集出现 1 次到 2 次
Regular expressions are a deep language.
9.”(ee)|ss” 表示匹配 ee 这个字符集出现 1 次到 2 次或者匹配 ss 这个字符集出现 1 次到 2 次
Regular expressions are a deep language.
10.”e\.” 表示匹配 e. 这两个字符,注意这里的点号并不是表示任意字符,经过转义后只是单纯的一个点号
Regular expressions are a deep language.
11.”Re/gi” 表示忽略大小写全局匹配 Re 这两个字符,后面的 gi 表示忽略大小写全局匹配,匹配结果如下第一个,”^Re/gi” 表示忽略大小写全局匹配以 Re 开头的字符,匹配结果如下第二个
Regular expressions area deep language.
Regular expressions are a deep language.
12.”[r,g]e./gi” 表示忽略大小写全局匹配 re 或者 ge 接任意字符,匹配结果如下面第一个,注意 are 后面的空格,”[r,g]e.$/gi” 表示忽略大小写全局匹配以 re 或者 ge 接任意字符结尾的字符,匹配结果如下第二个
Regular expressions area deep language.
Regular expressions are a deep language.
以上这些算是正则中很基础的了,后面还一篇关于稍微复杂一点的正则匹配,这些都需要亲自去实践,其实我觉得技术性的东西都需要自己去实践一番,就好比刚开始学习一个框架都是照着网上的教程练习之后才慢慢熟悉,之后再应用在实战中。总之做程序员这一行,实践永远都是唯一真理。
最后不得不吐槽一下微信公众号的排版,实在是不忍直视,弄了好久才弄到现在这个样子,虽然还是很丑但起码还能看一眼。写之前其实我考虑到了微信公众号排版的问题,但我还真没想到问题这么大,只能说自己在写之前还没完全做好功课,之后排版应该会慢慢优化,争取找到一个最优的排版方案。
励志成为一名菜鸟码农,共勉!
领取专属 10元无门槛券
私享最新 技术干货