• python 正则表达式


    基本语法

    # 1. 一般字符: 匹配字符的本身
    print(re.match("abc","abcdefg"))
    print("abc" in "abcdefg")
    
    # 2 【.】 --匹配一个除
     外所有的字符
    # 需求: 三个字母,第一个是a
    print(re.match("^a..$","a35"))
    
    # 3 【】 --转义字符
    print(re.match("a...","a.1#"))
    print(re.match("a[.]..","a.123"))
    print(re.match("a[.]..$","a.1#asdfasdf"))
    # 4 【】 --字符集中的任意一个字符
    print(re.match("^a[bdc]e$","abe"))
    print(re.match("^a[bdc]e$","ade"))
    print(re.match("^a[bdc]e$","ace"))
    
    # 5 开头: ^ 结尾: $  --- 完全匹配
    print(re.match("^a[bdc]f$","acf"))

    <re.Match object; span=(0, 3), match='abc'>
    True
    <re.Match object; span=(0, 3), match='a35'>
    <re.Match object; span=(0, 4), match='a.1#'>
    <re.Match object; span=(0, 4), match='a.12'>
    None
    <re.Match object; span=(0, 3), match='abe'>
    <re.Match object; span=(0, 3), match='ade'>
    <re.Match object; span=(0, 3), match='ace'>
    <re.Match object; span=(0, 3), match='acf'>

    print(re.findall("^d{3}","^123dafd^888safd"))
    #2 【.】 --匹配一个除
     外所有的字符
    print(re.findall("a.{3}","^123d adfd a3434 afd^888safd"))

    ['^123', '^888']
    ['adfd', 'a343', 'afd^']

    #2 【.】 --匹配 这个字符
    print(re.findall("\\X","Xdfdfd Xadfd Xa3434 xafd^888safd"))
    
    print(re.findall("\b","Xdfdfd Xadfd Xa3434 xafd^888safd"))
    #为了避免困扰,建议写正则时加R/r
    print(re.findall(r"\b","Xdfdfd Xadfd Xa3434 xafd^888safd"))
    print(re.findall(r"\","Xdfdfd Xadfd Xa3434 xafd^888safd"))

    ['\X', '\X', '\X']
    ['', '', '', '', '', '', '', '', '', '']
    []
    ['\', '\', '\']

    print(re.findall(R"Ds{2}w","a  4 fadfsdfasd adfasdf  _f"))
    #匹配a-f开头 不区分大小写,后面三个小写字每句,后面以偶数结尾
    print(re.findall(R"[a-zA-Z][a-z]{3}[02468]","asdfd2  4 fadfsdfasd6 adfasdf8  _f"))

    ['a  4', 'f  _']
    ['sdfd2', 'fasd6', 'asdf8']

    print(re.findall(r"na[a-z]*e","my name is nae  date nadwsdfe nadwsdfddde nadwsdfddfdfddsdde"))
    print(re.findall(r"na[a-z]+e","my name is nae  date nadwsdfe nadwsdfddde nadwsdfddfdfddsdde"))
    print(re.findall(r"na[a-z]?e","my name is nae  date nadwsdfe nadwsdfddde nadwsdfddfdfddsdde"))
    print(re.findall(r"na[a-z]{5}e","my name is nae  date nadwsdfe nadwsdfddde nadwsdfddfdfddsdde"))
    print(re.match(r"(d{14}[0-9X])|(d{17}[0-9X])","411111111111111111"))
    print(re.findall(r"na[a-z]{5,10}e","my name is nae  date nadwsdfe nadwsdfddde"))
    print(re.findall(r"na[a-z]{5,}e","my name is nae  date nadwsdfe nadwsdfddde nadwsdfddfdfddsdde"))

    ['name', 'nae', 'nadwsdfe', 'nadwsdfddde', 'nadwsdfddfdfddsdde']
    ['name', 'nadwsdfe', 'nadwsdfddde', 'nadwsdfddfdfddsdde']
    ['name', 'nae']
    ['nadwsdfe']
    <re.Match object; span=(0, 15), match='411111111111111'>
    ['nadwsdfe', 'nadwsdfddde']
    ['nadwsdfe', 'nadwsdfddde', 'nadwsdfddfdfddsdde']

    import  re
    match_result = re.finditer(R"([a-z])([a-z])[a-z]21","fdafd abcba ytgty asdsa")
    match_list=[]
    for i in match_result:
    match_list.append(i.group(0))
    print(match_list)

    print(re.findall(R"(?P<number01>[a-z])(?P<number02>[a-z])[a-z](?P=number02)(?P=number01)","fdafd abcba ytgty asdsa"))

    ['abcba', 'ytgty', 'asdsa']
    [('a', 'b'), ('y', 't'), ('a', 's')]

    print(re.findall(R"(?<=name=)[a-z]+","fdafd name=abcba name=ytgty name=asdsa"))

    ['abcba', 'ytgty', 'asdsa']

    每天进步一点点,多思考,多总结 版权声明:本文为CNblog博主「zaituzhong」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
  • 相关阅读:
    【洛谷 P1896】[SCOI2005]互不侵犯(状压dp)
    【洛谷 P4289】[HAOI2008]移动玩具(搜索)
    【洛谷 SP283】NAPTIME
    【洛谷 P4342】[IOI1998]Polygon(DP)
    【洛谷 SP2878】Knights of the Round Table(双联通分量)
    【洛谷 P4168】[Violet]蒲公英(分块)
    【洛谷 P4180】【模板】严格次小生成树[BJWC2010](倍增)
    数学总结
    个人码风
    【洛谷 P3304】[SDOI2013]直径(树的直径)
  • 原文地址:https://www.cnblogs.com/tingxin/p/12154357.html
Copyright © 2020-2023  润新知