美文网首页
【一定要掌握的技能】正则表达式教程

【一定要掌握的技能】正则表达式教程

作者: 糖醋沼跃鱼 | 来源:发表于2020-12-16 19:34 被阅读0次

    正则表达式

    序言

    有些人面临一个问题时会想:“我知道,可以使用正则表达式来解决这个问题。”于是现在他们就有两个问题了 ——Jamie Zawinski

    通配符

    别被这个名字吓到了,因为我一开始看它的时候就被吓到了。通配符其实就是一个“.”,它可以匹配任何字符,并且只能匹配一个。比如“.ython”只能匹配到“python”、“qython”、或者别的“+ython”。但是不能匹配到“qpython”因为通配符只能匹配到一个字符。

    令人头痛的转义

    如果我想匹配python.org怎么办,在“python.org”里面有一个点“.”,这在正则表达式中是通配符啊。他有可能会匹配成“pythonaorg”对吧。所以我们需要转义,ok,现在要打起精神,我们需要在它的前面加上反斜线了“python\\.org”

    python\\.org
    

    ok,本来我们只要转义“.”不就好了么,"."转义是“\.”,那为什么上面要两个斜线呢?这里面涉及到两层转义,一个是解释器的转义,另一个是re模块的转义。为了让我看的更加明白我要把这里我用markdown编辑的内容截个图就明白了,其实为了让文章显示我想要的符号,我已经使用了一次转义了。这里请细细体会

    [图片上传失败...(image-9b7137-1608204850092)]

    上面的图文请对比转义的地方看,会有所启发

    如果真的很讨厌这样写的话,可以使用原始字符串r'python\.org'

    选择符和子模式

    我想要的那么多,不可能只匹配个python吧,如果我想要“python”和“perl”呢?使用选择符“python|perl”,但是他们都有一个相同的部分“p”’,那就使用子模式,括号括起来的部分就是子模式了,“p(ython|erl)”。

    可选项和重复子模式

    在子模式后面加上问号,他就变成了可选项。他可能出现在匹配字符串中,但并非必须的。例如

    r'(http://)?(www\.)?python\\.org'
    

    使用了什么呢,首先是使用了原始字符串,过滤了一次转义,然后是两个可选项对吧

    它只能匹配到这几种字符串

    'http://www.python.org'
    
    'www.python.org'
    
    'http://python.org'
    
    'python.org'
    

    可选项表示模式可以出现一次或者根本不出现。下面这些运算符允许子模式重复多次。

    (pattern)*:允许模式重复0次或多次

    (pattern)+:允许模式重复1次或多次

    (pattern){m,n}:允许模式重复m到n次

    字符串的开始和结尾

    '^'表示以什么开始

    '$'表示以什么结尾

    常用的方法

    compile()
    

    re.compole将正则表达式(以字符串书写的)转换为模式对象,你也许不知道模式对象是什么,现记住它叫pattern

    search()
    

    函数search会在给定字符串中寻找第一个匹配给定正则表达式的自字符串。

    re.search(pat, string)
    

    里面的pat是用字符串表示的正则表达式。
    上式等价于

    pat.search(string)
    

    这里的pat,就是一个由compile()转换的一个模式对象了。明白了吧

    相关文章

      网友评论

          本文标题:【一定要掌握的技能】正则表达式教程

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