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

    在做接口的时候,上个接口返回的数据做为下一个接口的参数,这个时候我们可以用到正则表达式进行提取

    正则表达式

    正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

    正则表达式常用字符

    re模块

    在python语言中正则表达式是通过re模块进行实现的

    re模块常用方法

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

    复制代码
    # match用法
    re.match(pattern, string, flags=0)
    
    a = 'foo'
    b= 'foo '
    m = re.match(a,b)   # 模式匹配字符串,匹配就返回信息,不匹配就返回None,如果从开始匹配,匹配到就返回。
    print(m)
    if m is not None:   # 如果匹配,就返回匹配内容
        print(m.group())
    
    执行结果:
    
    <re.Match object; span=(0, 3), match='foo'>
    foo
    复制代码

    group()表示返回匹配对象

    groups()表示返回包含唯一或者全部的元祖形式

    search(pattern, string, flags=0)

    复制代码
    # search用法
    # search(pattern, string, flags=0)
    a = 'foo'
    b= 'seafood '
    m = re.search(a,b)   # 搜索匹配字符串,匹配就返回信息,不匹配就返回None
    print(m)
    if m is not None:   # 如果匹配,就返回匹配内容
        print(m.group())
    
    执行结果:
    <re.Match object; span=(3, 6), match='foo'>
    foo
    复制代码

    match()和search区别

    re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

    findall(pattern, string, flags=0)

    复制代码
    # findall用法
    # re.findall(pattern, string, flags=0)
    a = 'sea foo'
    b= 'sea food '
    m = re.findall(a,b)     # 进行匹配,发现匹配的返回一个列表,如果没有找到匹配的,则返回空列表
    print(m)
    
    
    代码结果:
    ['sea foo']
    复制代码

    finditer(pattern, string, flags=0)

    复制代码
    # finditer用法
    # finditer(pattern, string, flags=0)
    b= 's3eaf1oo2d '
    m = re.finditer(r'd',b)    # 返回内容存在一个迭代器中
    for i in m:
        print(i.group())
    
    代码结果:
    3
    1
    2
    复制代码

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

    subn(pattern, repl, string, count=0, flags=0)

    复制代码
    # sub 和subn的用法
    # sub(pattern, repl, string, count=0, flags=0)
    # subn(pattern, repl, string, count=0, flags=0)
    a = 'Anjing is  a test'
    b = 'exploit'
    m = re.sub('test',b,a)  # 搜索和替换,返回替换内容
    m1 = re.subn('test',b,a)    # 搜索和替换,返回替换内容+替换总数字
    print(m)
    print(m1)
    
    代码结果:
    Anjing is  a exploit
    ('Anjing is  a exploit', 1)
    复制代码

    两者区别,subn返回比sub多一个替换总数字

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

    复制代码
    # split用法
    # split(pattern, string, maxsplit=0, flags=0)
    a = 'test1:test2:test3'
    m = re.split(':',a) # 已:进行分割,并返回分割数据已列表展示
    print(m)
    
    代码结果:
    ['test1', 'test2', 'test3']
    复制代码
     
    分类: python基础
     
     
    来源:
    测试-安静    https://www.cnblogs.com/qican/
     
  • 相关阅读:
    Android开发技术周报 Issue#101
    Android开发技术周报 Issue#102
    Android开发技术周报 Issue#100
    Android开发技术周报 Issue#98
    Android开发技术周报 Issue#99
    ANDROID开发技术周报 ISSUE#90
    ANDROID开发技术周报 ISSUE#91
    Android开发技术周报 Issue#0
    Android开发技术周报 Issue#2
    c#中的delegate(委托)和event(事件)
  • 原文地址:https://www.cnblogs.com/rxxbb123/p/14234175.html
Copyright © 2011-2022 走看看