当前位置 博文首页 > m0_51723227的博客:正则

    m0_51723227的博客:正则

    作者:[db:作者] 时间:2021-08-09 10:03

    正则表达式

    1.常用函数: findall, match, research.

    • findall(pattern, string) 在整个字符串中查看符合条件的所有字符串,并返回一个列表.
    • match(pattern, string) 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none
    • research(pattern, string) 扫描整个字符串并返回第一个成功的匹配,如果没有匹配成功,就返回none.
    • match和research 成功匹配后返回的都是一个对象,可以使用**group()和span()**进行查看

    例子:

    import re
    String = "hello python, you are a son of Python, hello world, ok"
    print("# 01 findall()函数找出所有匹配的例子")
    string1 = re.findall(r"hello", String)
    print(string1)
    
    
    print("# 02 函数从第一个字符串开始找,并且使用group()和span()查看")
    string2 = re.match(r"hello", String)
    string3 = re.match(r"python", String)
    string4 = string2.group()
    string5 = string2.span()
    print(string2)
    print(string3)
    print(string4)
    print(string5)
    
    
    print("# 03 search()函数从整个字符串开始匹配,只返回一个,并且使用group()和span()查看")
    string6 = re.search(r"hello", String)
    string7 = string6.group()
    string8 = string6.span()
    print(string6)
    print(string7)
    print(string8)
    

    运行结果:

    # 01 findall()函数找出所有匹配的例子
    ['hello', 'hello']
    # 02 函数从第一个字符串开始找,并且使用group()和span()查看
    <_sre.SRE_Match object; span=(0, 5), match='hello'>
    None
    hello
    (0, 5)
    # 03 search()函数从整个字符串开始匹配,只返回一个,并且使用group()和span()查看
    <_sre.SRE_Match object; span=(0, 5), match='hello'>
    hello
    (0, 5)
    

    2.元字符

    字符功能
    .任意匹配一个字符("\n"除外)
    [abc]匹配(重复)里面的任意一个字符
    [^abc]匹配(重复)非里面的任意一个字符
    *匹配**>=0个重复的在号之前的一个字符*。 比如abc*,可以匹配到ab abc abccc abccccc
    +匹配**>=1个重复的在+号之前的一个字符**。 比如ab*可以匹配到ab abbbb
    ?一般用于**.*?模式,表示非贪婪**
    \d (data)匹配任意一个数字
    \D匹配任意一个非数字
    \s (space)匹配任意一个空格
    \S匹配任意一个非空格
    \w (word)匹配任意一个字符(字母,数字,下划线)
    \W匹配任意一个非字符
    {m}匹配m个大括号之前的字符
    {m, n}匹配num个大括号之前的字符 (n <= num <= m).
    ^开始行开始匹配
    $从末端开始匹配
    |运算符,匹配符号前或后的字符
    (ab)(ab) 字符集,匹配与 ab 完全相等的字符串.
    \b (borderland)匹配一个单词的边界
    \B匹配一个单词的非边界 (数字字母下划线其他字符交界处认为是单词边界)
    1. "."
    import re
    a = "hello everyone"
    print(re.findall(r".", a))
    print(re.findall(r"h.", a))
    

    结果:

    ['h', 'e', 'l', 'l', 'o', ' ', 'e', 'v', 'e', 'r', 'y', 'o', 'n', 'e']
    ['he']
    
    1. [abc]
    import re
    a = "hello everyone"
    print(re.findall(r"[evy]", a))
    

    结果:

    ['e', 'e', 'v', 'e', 'y', 'e']
    
    1. [^abc]
    import re
    a = "hello everyone"
    print(re.findall(r"[^evy]", a))
    

    结果:

    ['h', 'l', 'l', 'o', ' ', 'r', 'o', 'n']
    
    import re
    a = "abbsdfaaaddddab"
    print(re.findall(r"ab*", a))
    

    结果:

    ['abb', 'a', 'a', 'a', 'ab']
    

    其实变动的一直是b(0次,多次),而它之前的都没有变动

    1. +
    import re
    a = "abbsdfaaaddddab"
    print(re.findall(r"ab+", a))
    

    结果:

    ['abb', 'ab']
    

    +号相比于*号,b虽然也在变动,但是至少保持了b至少有一个

    1. \d \D
    import re
    a = "big_mouse15468713_little"
    print(re.findall(r"\d", a))
    print(re.findall(r"\D", a))
    

    结果:

    ['1', '5', '4', '6', '8', '7', '1', '3']
    ['b', 'i', 'g', '_', 'm', 'o', 'u', 's', 'e', '_', 'l', 'i', 't', 't', 'l', 'e']
    
    1. \s \S
    import re
    a = "big  mouse15468713  little"
    print(re.findall(r"\s", a))
    print(re.findall(r"\S", a))
    

    结果:

    [' ', ' ', ' ', ' ']
    ['b', 'i', 'g', 'm', 'o', 'u', 's', 'e', '1', '5', '4', '6', '8', '7', '1', '3', 'l', 'i', 't', 't', 'l', 'e']
    
    1. \w \W
    import re
    a = "big__ +++   mou713 *** __lie"
    print(re.findall(r"\w", a))
    print(re.findall(r"\W", a))
    

    结果:

    ['b', 'i', 'g', '_', '_', 'm', 'o', 'u', '7', '1', '3', '_', '_', 'l', 'i', 'e']
    [' ', '+', '+', '+', ' ', ' ', ' ', ' ', '*', '*', '*', ' ']
    
    1. {m} {m,n}
    import re
    a = "aaassscns77777asdcssss"
    print(re.findall(r"as{3}", a))
    print(re.findall(r"s7{2,7}", a))
    

    结果:

    ['asss']
    ['s77777']
    
    1. ^ $
    import re
    a = "avbibfvxchfvkdnvs"
    # 注意这里没有加  星号*
    print(re.findall(r"^a.", a))
    print(re.findall(r".s$", a))
    print(re.findall(r"^a.s$", a))
    # 注意这里加了    星号*
    print(re.findall(r"^a.*", a))
    print(re.findall(r".*s$", a))
    print(re.findall(r"^a.s$", a))
    

    结果:

    ['av']
    ['vs']
    []
    ['avbibfvxchfvkdnvs']
    ['avbibfvxchfvkdnvs']
    []
    
    1. |
    import re
    a = "afvnlxczxjkchs"
    c = re.findall(r"x|f",
    
    下一篇:没有了