在做文字处理或编写程序时,用到查找、替换等功能,使用正则表达式能够简单快捷的完成目标。
0.RegexBuddy工具的使用
参考资料[Zjmainstay]
1.初始界面介绍
image.png2.如何使用匹配
可以匹配到字符串显示为黄色和蓝色,没有匹配到的不变色。
image.png3.如何使用Debug功能
可以看出匹配的每一步的具体过程。
image.png1.字符
image.png1.非打印字符
image.png2.特殊字符
image.png按照字符来解读更易于明白新遇到的正则表达式的内部逻辑。比如如下解释:
image.png3.反义字符
image.png注意是大写字母
4.常见的元字符
如果需要匹配的某个字符本身就是元字符,则正则表达式会在前面加上转义字符\
。
注意:一个字符是否是元字符取决于应用的具体情况。例如,只有在字符组外并且是在未转义的情况下,
*
才是一个元字符。\*
是对*
的转义,而\\*
则不是(第一个反斜线用来转义第二反斜线)。
2.量词(限定字符)
image.png现在来看下color
和colour
的匹配。它们的区别在于,后面的单词比前面的多一个u
,我们可以用colou?r
来解决这个问题。元字符?
代表可选项。把它加在一个字符的后面,就代表此处容许出现这个字符,不过它的出现并非匹配成功的必要条件。
3.字符边界
image.png4.预搜索(零宽断言、环视)
判断当前位置的前后字符,是否符合指定的条件,但不匹配前后的字符。
image.png5.匹配模式
image.png6.选择符和分组
image.png现在我们需要匹配表示7月4日(July fourth)的文本,其中月份可能写作July
或者是Jul
,而日期可能写作fourth
、4th
或者是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
网友评论