• re库


    re.search()    在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象
    re.match()    在一个字符串的开始位置匹配正则表达式,返回match对象
    re.findall()    搜索字符串,以列表的形式返回全部能匹配的子串
    re.split()    将一个字符串按照正则表达式匹配的结果进行分割,返回列表类型
    re.finditer()    搜索字符串,返回一个匹配的迭代类型,每个迭代元素是match对象
    re.sub()    在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串

    regex = re.compile(pattern,flags=0)

    此时的regex是一个正则表达式

    例:

    content = 'Hello, I am Jerry, from Chongqing, a montain city, nice to meet you……'
        regex = re.compile('w*ow*')
        y = regex.match(content)
        print(y)
        print(type(y))
        print(y.group())
        print(y.span())
    
    # <_sre.SRE_Match object; span=(0, 5), match='Hello'>
    # <class '_sre.SRE_Match'>
    # Hello
    # (0, 5)

    re.search(pattern,string,flags=0)

    pattern    正则表达式的字符串或原生字符串表示
    string    带匹配的字符串
    flags    正则表达式使用时的控制标记

    flags的常用标记:

    re.I   re.IGNORECASE    忽略正则表达式的大小写,[A-Z]能够匹配小写字符
    re.M  re.MULTLINE    正则表达式中的^操作符能够将给定字符串的每行当做匹配开始
    re.S  re.DOTALL    正则表达式中的.操作符能够匹配所有字符,默认匹配除
    外的所有字符

    例:

    1 import re
    2 match1 = re.search(r'[1-9]d{5}','BIT 100081 TSU100084')
    3 if match1:
    4     print(match1.group(0))
    5 
    6 #结果:100081

    re.match(pattern,string,flags=0)

    例:

    1 import re
    2 match2 = re.match(r'[1-9]d{5}','BIT 100081')
    3 if match2:
    4     print(match2.group(0))
    5     
    6 #print(match2.group(0)),注意,如果这里不直接判断re.match()返回的对象是否为空,会报错,
    7 #因为这里的match2并没有从这个字符串的开始部分匹配到目标字符串,所以返回的match2对象没有group这个参数
    
    1 #对上面的代码进行修改
    2 match3 = re.match(r'[1-9]d{5}','100081 BIT')
    3 if match3:
    4     print(match3.group(0))
    5 
    6 #输出:'100081'

    re.findall(pattern,string,flags=0)

    例:

    1 import re 
    2 ls = re.findall(r'[1-9]d{5}','BIT100081 CLS100084')
    3 print(ls)#['100081','100042'],将所有匹配的输出
    4 for i in ls:
    5     print(i)
    6 #100081
    7 #100084

    re.split(pattern,string,maxsplit,flags=0)

    例:

    # maxsplit最大分割数,剩余部分作为最后一个元素输出
     1 import re
     2 m = re.finditer(r'[1-9]d{5}','BIT100081 TSU100084')
     3 #re.finditer返回的是迭代类型
     4 #如果此时运行print(m),输出是<callable_iterator object at 0x0000024203F83E10>
     5 for i in m:
     6     print(i)
     7 #输出:
     8 #<re.Match object; span=(3, 9), match='100081'>
     9 #<re.Match object; span=(13, 19), match='100084'>
    10 #正确的输出格式
    11 for m in re.finditer(r'[1-9]d{5}','BIT100081 TSU100084'):
    12     if(m):
    13         print(m.group(0))
    14 #100081
    15 #100084

    re.finditer(pattern,string,maxsplit,flags=0)

    例:

     1 import re
     2 m = re.finditer(r'[1-9]d{5}','BIT100081 TSU100084')
     3 #re.finditer返回的是迭代类型
     4 #如果此时运行print(m),输出是<callable_iterator object at 0x0000024203F83E10>
     5 for i in m:
     6     print(i)
     7 #输出:
     8 #<re.Match object; span=(3, 9), match='100081'>
     9 #<re.Match object; span=(13, 19), match='100084'>
    10 #正确的输出格式
    11 for m in re.finditer(r'[1-9]d{5}','BIT100081 TSU100084'):
    12     if(m):
    13         print(m.group(0))
    14 #100081
    15 #100084

    re.sub(pattern,repl,string,count=0,flags=0)

    例:

    # repl    替换匹配字符串的字符串
    # count    匹配的最大替换次数
    1 import re
    2 print(re.sub(r'[1-9]d{5}',':zipcode','BIT100081 TSU100084'))
    3 #BIT:zipcode TSU:zipcode
    4 print(re.sub(r'[1-9]d{5}',':zipcode','BIT100081 TSU100084',count=1))
    5 #BIT:zipcode TSU100084
  • 相关阅读:
    P2184 贪婪大陆
    codeforces-1348-D Phoenix and Science
    联系我
    留言板
    友链
    java集合ArrayList按指定字段排序
    linux下设置oracle开机自启动
    微信公众号开发参考教程
    java生成快递单并调用打印机打印
    java生成128A条形码
  • 原文地址:https://www.cnblogs.com/daicw/p/13275795.html
Copyright © 2020-2023  润新知