• 正则规范表达式


    一、元字符

      正则表达式中的特殊字符被称作元字符,常用的元字符如下:

      .  点,匹配除换行符以外的任意字符

      w  匹配数字、字母和下划线(可以匹配汉字)

      s  匹配空白字符,如空格、换行符、制表符等

      d  匹配数字

        匹配单词的开始或结束

      ^  匹配字符串的开始

      $  匹配字符串的结尾

      (特殊)  转义字符。如果需要匹配的内容含有元字符本身的,需要使用转义字符进行转义

      “.”的用法(使用python3.x进行举例,具体的python3.x的正则表达式的用法请参考http://www.cnblogs.com/cdinc/p/5789429.html):

    string='qq14717287xx@qq.com&10010/10086'
    pattern=r'.com.'
    item=re.search(pattern,string)
    print(item.group())

      运行结果是:

    .com&

      可以看到匹配的结果是com和前一个字符和后一个字符,这个就是这个“.”的作用。

      “w”的用法:

    string='qq14717287xx@qq.com&10010/10086'
    pattern=r'7287w'
    item=re.search(pattern,string)
    print(item.group())

      运行结果是:

    7287x

      可以看到匹配的结果是“7287”后面再多加一个字母,这就是“w”的用法。

      “s”的用法:

    string='qq14717287xx@qq.  com&10010/10086'
    pattern=r'scom'
    item=re.search(pattern,string)
    print(item.group())

      运行结果是:

     com

      在com前面又匹配到了一个空格

      “d”的用法:

    string='qq14717287xx@qq.  com&10010/10086'
    pattern=r'qqd'
    item=re.search(pattern,string)
    print(item.group())

      运行结果是:

    qq1

      “”的用法:

    string='qq14717287xx@qq.  com&10010/10086'
    pattern=r'com'
    item=re.search(pattern,string)
    print(item.group())

      运行结果是:

    com

      将“com”作为一个单词进行匹配。因为匹配的是单词的开头或者结尾,所以如果匹配的是“om”也可以匹配上,是com单词的结尾,但是“om”则无法匹配,因为om前面有c,认为com是一个单词,“om”并不是单词的开始位置,所以无法匹配。

      “^”的用法:

    string='qq14717287xx@qq.  com&10010/10086'
    pattern=r'^qq'
    item=re.search(pattern,string)
    print(item.group())

      运行结果是:

    qq

      匹配以“qq”开头,所以能够匹配上,如果是“^com”,则无法匹配上。

      “$”的用法:

    string='qq14717287xx@qq.  com&10010/10086'
    pattern=r'0086$'
    item=re.search(pattern,string)
    print(item.group())

      运行结果是:

    0086

      匹配以0086结尾,能够匹配上。填写正则表达式的时候,$符号要放在匹配字符串或者公式的后面。

       “”(转移字符)的用法:

    string='qq14717287xx@qq.com$10010/10086'
    pattern=r'com$'
    item=re.search(pattern,string)
    print(item.group())

      运行结果是:

    com$

      可见本次就是纯粹的查找的“com$”,而没有将$作为元字符处理。

    二、重复

      正则表达式中提供了几种重复的方式,毕竟如果匹配三个字母使用“www”的方式太不方便了,如果是三个还好,如果是十个、二十个呢。

      *  重复零次或者多次

      +  重复一次或者多次

      ?  重复零次或者一次

      {n}  重复n次

      {n,}  重复n次或者更多次

      {n,m}  重复n次到m次

      “*”的用法:

    string='qq14717287xx@qq.com$10010/10086'
    pattern=r'w*'
    item=re.search(pattern,string)
    print(item.group())

      运行结果是:

    qq14717287xx

       可以看到匹配到了多次字母和数字。

      “+”的用法:

    string='qq14717287xx@qq.com$10010/10086'
    pattern=r'w+!*'
    item=re.search(pattern,string)
    print(item.group())

      运行结果是:

    qq14717287xx

      结果是匹配到了多个字母、数字,因为匹配字符串中没有“!”。如果匹配的是“w+!+”,则无法匹配。这从另一个方面说明了“*”和“+”的区别。

      “?”的用法:

    string='qq14717287xx@qq.com$10010/10086'
    pattern=r'w+@?'
    item=re.findall(pattern,string)
    print(item)

      运行结果是:

    ['qq14717287xx@', 'qq', 'com', '10010', '10086']

      可以看到,使用匹配的字符后面含有1个或没有“@”符号

      “{n}”的用法:

    string='qq14717287xx@qq.com$10010/10086'
    pattern=r'w{5}'
    item=re.findall(pattern,string)
    print(item)

      运行结果是:

    ['qq147', '17287', '10010', '10086']

      对于数字、字母重复了五次的地方进行了匹配。

      “{n,}”的用法:

    string='qq14717287xx@qq.com$10010/10086'
    pattern=r'w{5,}'
    item=re.findall(pattern,string)
    print(item)

      运行结果是:

    ['qq14717287xx', '10010', '10086']

      匹配了数字、字母重复5次及以上的地方。

      “{n,m}”的用法:

    string='qq14717287xx@qq.com$10010/10086'
    pattern=r'w{5,8}'
    item=re.findall(pattern,string)
    print(item)

      运行结果是:

    ['qq147172', '10010', '10086']

      可以看到,因为限定了重复次数(5-8次),所以第一个组合(qq14717287xx)被分开进行匹配。

  • 相关阅读:
    kibana.yml(中文配置详解)
    Elasticsearch之marvel(集群管理、监控)插件安装之后的浏览详解
    ElasticSearch vs Lucene多维度分析对比
    ElasticSearch 应用场景
    ElasticSearch 在Hadoop生态圈的位置
    ElasticSearch 工作原理
    ElasticSearch 架构图
    ElasticSearch vs 关系型数据库
    Codeforces Round #311 (Div. 2)
    uva 568(数学)
  • 原文地址:https://www.cnblogs.com/everest7/p/10588535.html
Copyright © 2020-2023  润新知