精通正则表达式(基础版)

2018-10-07  本文已影响0人  Michaelhbjian

在做文字处理或编写程序时,用到查找、替换等功能,使用正则表达式能够简单快捷的完成目标。

0.RegexBuddy工具的使用

参考资料[Zjmainstay]

1.初始界面介绍

image.png

2.如何使用匹配

可以匹配到字符串显示为黄色和蓝色,没有匹配到的不变色。

image.png

3.如何使用Debug功能

可以看出匹配的每一步的具体过程。

image.png

1.字符

image.png

1.非打印字符

image.png

2.特殊字符

image.png

按照字符来解读更易于明白新遇到的正则表达式的内部逻辑。比如如下解释:

image.png

3.反义字符

image.png

注意是大写字母

4.常见的元字符

如果需要匹配的某个字符本身就是元字符,则正则表达式会在前面加上转义字符\

image.png

注意:一个字符是否是元字符取决于应用的具体情况。例如,只有在字符组外并且是在未转义的情况下,*才是一个元字符。\*是对*的转义,而\\*则不是(第一个反斜线用来转义第二反斜线)。

2.量词(限定字符)

image.png

现在来看下colorcolour的匹配。它们的区别在于,后面的单词比前面的多一个u,我们可以用colou?r来解决这个问题。元字符?代表可选项。把它加在一个字符的后面,就代表此处容许出现这个字符,不过它的出现并非匹配成功的必要条件。

image.png

3.字符边界

image.png

4.预搜索(零宽断言、环视)

判断当前位置的前后字符,是否符合指定的条件,但不匹配前后的字符。

image.png

5.匹配模式

image.png

6.选择符和分组

image.png

现在我们需要匹配表示7月4日(July fourth)的文本,其中月份可能写作July或者是Jul,而日期可能写作fourth4th或者是4。显然,我们可以使用如下表示:

(July|Jul).(fourth|4th|4)

下面我们可以做一些优化:我们把(July|Jul)缩短为July?。然后把(fourth|4th|4)缩短为4(th)?。优化后的正则表达式为:

July?.(fourth|4(th)?)

7.运算符优先级

image.png

编写正则表达式时,按照预期获得成功的匹配要花去一半的工夫,另一半的工夫用来思考如何忽略那些不符合要求的文本。

8.电子邮件正则表达式示例讲解

电子邮件的规则如下:

^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@(([0-9a-zA-Z])+([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9})$

匹配效果如下:

image.png

现在我们来一步步分解来理解这个正则表达式:(这个还是慢慢看罗)

image.png

参考资料

https://my.oschina.net/u/3080373/blog/1550653

https://blog.csdn.net/cunjue/article/details/52404253

上一篇 下一篇

猜你喜欢

热点阅读