zoukankan      html  css  js  c++  java
  • re 模块使用

    正则表达式

      re模块是python独有的匹配字符串的模块,该模块中提供的很多功能是基于正则表达式实现的,而正则表达式是对字符串进行模糊匹配,提取自己需要的字符串部分,他对所有的语言都通用。

    正则表达式基础使用

    正则表达式元字符

    元字符 匹配内容
    . 匹配除换行符以外的任意字符
    w 匹配字母或数字或下划线
    s 匹配任意的空白字符
    d 匹配数字
    匹配一个换行字符
    匹配一个制表字符
     匹配一个单词的结尾
    ^ 匹配字符串的开始
    $ 匹配字符串的结尾
    W 匹配非字母或数字或下划线
    D 匹配非数字
    S 匹配非空白字符
    a|b  匹配字符a或字符b
    () 匹配括号内的表达式,也表示一个组
    [...] 匹配字符组中的字符
    [^...] 匹配除了字符组中字符的所有字符

    这则表达式中的量词

    量词 用法说明
    * 重复零次或更多次
    + 重复一次或更多次
    重复零次或一次
    {n} 重复n次
    {n,} 重复n次货更多次
    {n,m} 重复n到m次

    re模块简介

    • re模块是python独有的匹配字符串的模块
    • 该模块中的很多功能是基于正则表达式实现的
    • Python自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式

    re模块基础写法

    import re
    
    str = 'testtest123'
    # 方法一:
    # group:方法得到匹配的字符串,如果字符串没有匹配,则返回None
    print(re.match('w+', str).group())
    import re
    
    str = 'testtest123'
    # 方法二:
    pattern = re.compile('w+')
    value = pattern.match(str).group()
    print(value)

    re模块基础使用

    re.compile(pattern,flags=0):用于编译正则表达式,生成一个正则表达对象。

    • pattern:一个字符串形式的正则表达式
    • flags:可选,表示匹配模式,比如忽略大小写,多行模式等;
    import re
    
    str = 'testtest123'
    # 用于编译正则表达式,生成一个正则表达式对象
    regexp = re.compile('t(.+)t')
    # 调用regexp对象使用findall取出str t...t之间的值
    value = regexp.findall(str)
    print(value)
    ['esttes']

    re.search(pattern,string,flags = 0):扫描字符串以查找正则表达式模式产生匹配项的第一个位置 ,然后返回相应的match对象。

    import re
    
    str = 'testtest123'
    # 用于编译正则表达式,生成一个正则表达式对象
    # 方法一
    regexp = re.compile('t')
    value = regexp.search(str)
    print(value)
    # 方法二
    value2 = re.search('t', str).group()
    print(value2)
    <re.Match object; span=(0, 1), match='t'>
    t

    re.match(pattern, string, flags=0):如果字符串开头的零个或多个字符与正则表达式模式匹配,则返回相应的匹配对象。

    import re
    
    str = 'testtest123'
    print(re.match('t', str).group())
    print(re.match('w+', str).group())
    print(re.match('D+', str).group())
    t
    testtest123
    testtest

    re.fullmatch(pattern,string,flags=0):如果整个字符串与正则表达式模式匹配,则返回相应的match对象。

    import re
    
    str = 'testtest123'
    print(re.fullmatch('w+', str).group())
    testtest123

    re.split(pattern,string,maxsplit=0,flags=0):通过出现模式来拆分字符串。如果在pattern中使用了捕获括号,那么模式中所有组的文本也将作为结果列表的一部分返回。如果maxsplit不为零,则最多会发生maxspalit分割,并将字符串的其余部分作为列表的最后一个元素返回。

    import re
    
    str = 'testtest123'
    print(re.split('t', str))
    print(re.split('2', str))
    ['', 'es', '', 'es', '123']
    ['testtest1', '3']

    re.findall(pattern,string,flags=0):以string列表形式返回string中pattern的所有非重叠匹配项。从左到右扫描该字符串,并以找到的顺序返回匹配项。如果该模式中存在一个或多个组,则返回一个组列表;否则,返回一个列表。如果模式包含多个组,则这将是一个元祖列表。空匹配项包含在结果中。

    import re
    
    str = 'testtest123'
    print(re.findall('t', str))
    print(re.findall('2', str))
    ['t', 't', 't', 't']
    ['2']

    re.finditer(pattern,string,flags=0):返回一个迭代器,该迭代器在string类型的RE 模式的所有非重叠匹配中产生匹配对象。

    import re
    
    str = 'testtest123'
    print(re.finditer('t', str))
    <callable_iterator object at 0x00000275BB65EC70>

    re.sub(pattern,repl,string,count=0,flags=0):返回通过用替换repl替换字符串中最左边的不重叠模式所获得的字符串。如果找不到该模式,则返回的字符串不变。repl可以是字符串或函数;如果是字符串,则处理其中的任何反斜杠转义。即,将其转换为单个换行符,将其转换为回车,依次类推。count参数表示将匹配到的内容进行替换的次数

    import re
    
    str = 'testtest123'
    
    print(re.sub('d', 'one', str))
    print(re.sub('d', 'one', str, 2))
    testtestoneoneone
    testtestoneone3

    re.subn(pattern, repl, string, count=0, flags=0):执行与相同的操作sub(),但是返回一个元组。(new_string,number_of_subs_made)

    import re
    
    str = 'testtest123'
    
    print(re.subn('d', 'one', str))
    print(re.subn('d', 'one', str, 2))
    ('testtestoneoneone', 3)
    ('testtestoneone3', 2)
  • 相关阅读:
    线程数量与并行应用性能相关性的测试
    redis命令学习
    shell获取日期(昨天,明天,上月,下月)
    shell获取文件行数
    redis的备份和恢复
    redis使用Java学习
    kafka的一些常用命令
    查看kafka的group.id
    vim搜索后跳到下(上)一个
    redis批量执行
  • 原文地址:https://www.cnblogs.com/ClownAlin/p/13080135.html
Copyright © 2011-2022 走看看