美文网首页
研究正则匹配

研究正则匹配

作者: Chreyl_1d33 | 来源:发表于2018-09-06 15:55 被阅读0次

    【题外话】
    一直没太明白python正则替换怎么用的,每次现用都疯狂百度。。这次下决心要研究下~

    基本规则:
    *表示任意个字符(包括0个)
    +表示至少1个字符
    ?表示0个或1个字符
    {n}表示n个字符,{n,m}表示n-m个字符

    . - 匹配1个非换行符的任意字符
    \d - 匹配1个数字,等价 [0-9] \D取反
    \s - 匹配任何1个空白字符,等价 [ \f\n\r\t\v] \S取反
    \w - 匹配字母、数字、下划线,等价[A-Za-z0-9_] \W取反
    ^ - 匹配开头
    $ - 匹配结尾

    eg1:匹配'010-12345'这样的号码?
    由于'-'是特殊字符,在正则表达式中,要用''转义,所以,上面的正则是\d{3}-\d{3,8}

    懒惰匹配&贪婪匹配:
    懒惰匹配:尽可能短的匹配 .*?一般用于懒惰匹配
    贪婪匹配:尽可能长的匹配,正则匹配默认是贪婪匹配

    思考1:验证邮箱的正则表达? xx@xx.com
    规则:
    1.@之前必须有内容且只能是字母(大小写)、数字、下划线(_)、减号(-)、点(.)
    2.@和最后一个点(.)之间必须有内容且只能是字母(大小写)、数字、点(.)、减号(-),且两个点不能挨着
    3.最后一个点(.)之后必须有内容且内容只能是字母(大小写)、数字且长度为大于等于2个字节,小于等于6个字节
    答案: ^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(.[a-zA-Z0-9-]+)*.[a-zA-Z0-9]{2,6}$

    python的正则匹配模块re--常用函数:
    re.compile() --编译正则表达式模式,返回一个对象的模式;
    re.match() --只匹配字符串的开始,若字符串开始不符合,则匹配失败,返回None;
    re.findall() --匹配整个字符串,返回所有符合匹配的子串的集合;
    re.sub()
    re.subn()
    re.search() --匹配整个字符串,直到找到一个匹配;
    re.finditer()
    re.split()

    相关文章

      网友评论

          本文标题:研究正则匹配

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