zoukankan      html  css  js  c++  java
  • re模块2

    d  匹配任何十进制数;它相当于类[0-9]

    D  匹配任何非数字字符;它相当于类[^0-9]

    s   匹配任何空白字符;它相当于类[ fv]

    S  匹配任何非空白字符;它相当于类[^ fv]

    w   匹配任何字母数字字符;它相当于类[a-zA-Z0-9_]

    W   匹配任何非字母数字字符;它相当于类[^a-zA-Z0-9_]

        匹配一个特殊字符边界,比如空格,&,#等

    raw strings  原生字符串     强制字符串不转译   例如:

    1 import re
    2 
    3 a = re.findall(r'i', 'hello i an list')
    4 print(a)
    5 输出:
    6 ['i']
    1 import re
    2 
    3 # a = re.findall(r'i', 'hello i an list')
    4 a = re.findall('i\b', 'hello i an list')
    5 print(a)
    6 输出:
    7 ['i']
    1 import re
    2 
    3 a = re.findall('c\\l','cl')
    4 print(a)
    5 输出:
    6 ['c\l']

    |   管道符或者的意思

    1 import re
    2 a = re.findall('ka|b','kakdfkjbkdf')
    3 print(a)
    4 输出:
    5 ['ka', 'b']

    search()   只会找第一个满足的对象  使用group()  取出找到的结果

    1 import re
    2 a = re.search('d+','45sdf56we4dsfsd2e')  # 返回一个对象
    3 print(a.group())
    4 输出:
    5 45

    分组  例如   通过?P<str>   获取组

     1 import re
     2 
     3 a = re.findall('(?P<name>[a-zA-Z]+)(?P<age>d+)', 'dfgs45sdf56we4dsfsd2e')  # 返回一个对象
     4 print(a)
     5 输出:
     6 [('dfgs', '45'), ('sdf', '56'), ('we', '4'), ('dsfsd', '2')]
     7 
     8 import re
     9 
    10 a = re.findall('[a-zA-Z]+d+', 'dfgs45sdf56we4dsfsd2e')  # 返回一个对象
    11 print(a)
    12 输出:
    13 ['dfgs45', 'sdf56', 'we4', 'dsfsd2']

    match()   和search() 一样  只不过从开头开始匹配  例如:

     1 import re
     2 
     3 a = re.findall('[a-zA-Z]+d+', 'dfgs45sdf56we4dsfsd2e')  
     4 print(a)
     5 输出:
     6 ['dfgs45', 'sdf56', 'we4', 'dsfsd2']
     7 import re
     8 
     9 a = re.match('d+', 'dfgs45sdf56we4dsfsd2e')  # 返回一个对象
    10 print(a)
    11 输出:
    12 None

    re.split()   分割函数

    1 import re
    2 a = re.split('[ab]','asdaji')
    3 print(a)
    4 输出:
    5 ['', 'sd', 'ji']

    re.sub()  替换功能

    1 import re
    2 b = re.sub('d+','A','ksdfjk88fsdjhf8e8dsf76dsf656ds75dsf67')
    3 print(b)
    4 输出:
    5 ksdfjkAfsdjhfAeAdsfAdsfAdsAdsfA
    1 import re
    2 b = re.sub('d','A','ksdfjk88fsdjhf8e8dsf76dsf656ds75dsf67',4)
    3 print(b)
    4 输出:
    5 ksdfjkAAfsdjhfAeAdsf76dsf656ds75dsf67

    限定次数

    1 import re
    2 b = re.subn('d','A','ksdfjk88fsdjhf8e8dsf76dsf656ds75dsf67')
    3 print(b)
    4 输出:
    5 ('ksdfjkAAfsdjhfAeAdsfAAdsfAAAdsAAdsfAA', 13)
    1 import re
    2 com = re.compile('d+')
    3 b = com.findall('skdfj8sd7f6dsf768')
    4 print(b)
    5 输出:
    6 ['8', '7', '6', '768']

    使用compile进行编译,传入对象,以后就直接调用字符串进行寻找。

    使用finditer()  可以将结果变为一个可迭代对象,随用随取。  例如:

     1 import re
     2 b = re.finditer('d','sdhf78wejhdsf678ew6d5f7')
     3 print(b)
     4 print(next(b).group())
     5 print(next(b).group())
     6 print(next(b).group())
     7 print(next(b).group())
     8 输出:
     9 <callable_iterator object at 0x00612E08>
    10 7
    11 8
    12 6
    13 7

    去优先级,防止匹配成功后只出现括号里面的内容。    例如:

    1 import re
    2 # b = re.findall('www.(baidu|163).com','www.baidu.com')
    3 b = re.findall('www.(?:baidu|163).com','www.baidu.com')
    4 print(b)
    5 输出:
    6 ['www.baidu.com']
  • 相关阅读:
    PhpStorm一次性折叠所有函数或者方法
    安装IntelliJ IDEA热部署tomcat插件JreBel
    mysql-master-ha
    mysql sys table
    Innodb 表修复(转)
    MySQL Binlog 【ROW】和【STATEMENT】选择(转)
    Innodb 存储引擎(转)
    MySQL 利用SQL线程对Binlog操作(转)
    针对跑MySQL的Linux优化【转】
    MySQL explain key_len 大小的计算
  • 原文地址:https://www.cnblogs.com/ch2020/p/12412050.html
Copyright © 2011-2022 走看看