美文网首页
精通正则表达式(基础版)

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

作者: Michaelhbjian | 来源:发表于2018-10-07 19:36 被阅读0次

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

    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

    相关文章

      网友评论

          本文标题:精通正则表达式(基础版)

          本文链接:https://www.haomeiwen.com/subject/pgwwoftx.html