zoukankan      html  css  js  c++  java
  • re正则匹配

    import  re

    #'(?P<name>...)' 分组匹配
    print(re.search("(?P<id>[0-9]+)","abc12345daf@34")) #返回一个对象
    print(re.search("(?P<id>[0-9]+)", "abc12345daf@34").groupdict()) #以字典形式返回匹配的值
    print(re.search("(?P<id>[0-9]+)","abc12345daf@34").group()) #返回匹配的值

    print(re.search("(?P<id>[0-9]+)(?P<name>[a-zA-Z]+)","abc12345daf@34").groupdict()) #以字典形式返回匹配的值,第二个匹配的内容,从第一个匹配的内容后面找

    print(re.search("(?P<id>[0-9]+)(?P<name>[a-zA-Z]+)","abc12345daf@34").group('id')) #返回'id' [0-9]+ 匹配的value

    a = re.search("(?P<id>[0-9]+)(?P<name>[a-zA-Z]+)","abc12345daf@34").groupdict() #(?P<XXX>) 是语法 xxx 是KEY
    print(a['id'])
    print(a['name'])



    #替换
    print(re.sub("[0-9]+","|","abc12de3f45GH"))

    print(re.sub("[0-9]+","|","abc12de3f45GH",count=2)) #count=2 替换前两个


    # '(...)' 分组匹配,
    print(re.search("(abc){2}a(123|456)c", "abcabca456c").group()) #abc匹配两次,匹配一个a,匹配123或者456,匹配一个c,结果 abcabca456c

    # '|' 匹配|左或|右的字符
    print(re.search("(123|456)","c456b123a").group()) #匹配到456;123和456同时匹配字符串,谁先匹配到输出谁; 而不是123匹配所有字符串,然后456在匹配所有字符串


    #S(DOTALL): 点任意匹配模式,改变'.'的行为,flags=re.S
    print(re.search(r".+"," abc e ee")) #匹配到abc
    print(re.search(r".+"," abc e ee",flags=re.S)) #匹配到 abc e ee


    #匹配反斜杠
    string = '38'
    m = re.search('(d+)\\', string) #d 表示数字,+多个;\\ 字符串转义后是\,然后再正则转义后是

    if m is not None:
    print( m.group(1)) # 结果为:3

    n = re.search(r'(d+)\', string) #不转义特殊字符,直接进行正则转义是

    if n is not None:
    print(n)
    print(n.group(1)) # 结果为:3


    #匹配反斜杠解析:
    (1)、python自身处理字符串时,反斜杠是用于转义字符
    (2)、正则表达式也使用反斜杠来转义字符


    最常用的匹配语法:
    re.match 从头开始匹配
    re.search 匹配包含
    re.findall 把所有匹配到的字符放到以列表中的元素返回
    re.splitall 以匹配到的字符当做列表分隔符
    re.sub 匹配字符并替换


    参考:
    https://www.cnblogs.com/alex3714/articles/5161349.html
    https://blog.csdn.net/jinixin/article/details/56705284
    https://www.cnblogs.com/wangyongbin/p/4253805.html


  • 相关阅读:
    【006期】JavaSE面试题(六):泛型
    【005期】JavaSE面试题(五):String类
    【004期】JavaSE面试题(四):JavaSE语法(3)
    【003期】JavaSE面试题(三):JavaSE语法(1)
    【002期】JavaSE面试题(二):基本数据类型与访问修饰符
    【001期】 | JavaSE面试题(一):面向对象
    【000期】Java最全面试题库思维导图
    LeetCode 1. 两数之和(python3)实现
    虚拟网络学习笔记一:Linux虚拟网络
    快速排序(python实现)
  • 原文地址:https://www.cnblogs.com/lighthouse/p/9597374.html
Copyright © 2011-2022 走看看