zoukankan      html  css  js  c++  java
  • 正则规范表达式

    一、元字符

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

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

      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)被分开进行匹配。

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 校门外的树
    Java实现 蓝桥杯VIP 算法训练 统计单词个数
    Java实现 蓝桥杯VIP 算法训练 统计单词个数
    Java实现 蓝桥杯VIP 算法训练 开心的金明
    Java实现 蓝桥杯VIP 算法训练 开心的金明
    Java实现 蓝桥杯 算法训练 纪念品分组
    Java实现 蓝桥杯 算法训练 纪念品分组
    Java实现 蓝桥杯VIP 算法训练 校门外的树
    Java实现 蓝桥杯VIP 算法训练 统计单词个数
    Java实现 蓝桥杯VIP 算法训练 开心的金明
  • 原文地址:https://www.cnblogs.com/everest7/p/10588535.html
Copyright © 2011-2022 走看看