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

    RE模块

    • 查找
      • findall
        • 匹配所有每一项都是列表中的一个元素
        • re.findall()
          • 正则表达式,带匹配的字符串,flag
      • search
        • 只匹配从左到右的第一个结果,得到的不是直接的结果,而是一个变量,通过这个变量group方法来获取结果
        • re.search 内存地址,这是一个正则的结果,
          • 通过ret.group()获取真正的结果
        • 如果没有匹配到,会返回None,使用.group()会报错
      • match
        • 匹配从头开始匹配,相当于search中的正则表达式加上一个^
        • ret = re.match ('正则推导式','字符串')
    • 字符串处理的扩展:替换 切割
      • split
        • 切割 返回列表,按照正则规矩进行切割,默认匹配到的内容会被切割
      • sub
        • 替换 旧的 新的 次数
        • 替换,按照正则规则去寻找要被替换的内容,
      • subn
        • 返回一个元组,第二个元素是替换的次数
    • re模块的进阶
      • compile 节省你使用正则表达式解决问题的时间
        • 编译正则表达式编译成 字节码
        • 在多次使用的过程中, 不会多次编译
        • 编译一个正则表达式,用这个结果去search match findall
      • finditr 节省你使用正则表达式解决问题的时间
        • 返回一个迭代器,所有的结果都在这个迭代器中, 需要通过循环+group的形式取值 , 能够节省内存
    • 分组在python中 的应用
      • 为了findall也可以顺利取到分组中的内容,有一个特殊的语法,就是优先显示分组中的内容
      • 取消分组优先(?:正则表达式)
        • # ret = re.findall('d+(?:.d+)', '144.365')
    • 分组命名
      • 对于python而言来说 分组可以帮助你更好更精确的找到你真正需要的内容
      • (?P<这个组的名字>正则的表达式)
        • # s = '<a>wahaha</a>'
        • # ret = re.search('>(?P<con>w+)<',s)
        • # print(ret.group(1))
        • # print(ret.group('con'))
      • 使用前面的分组 要求使用这个名字的分组和前面同名分组中的内容匹配的必须一致
        • 使用前面的分组 要求使用这个名字的分组和前面同名分组中的内容匹配的必须一致
        • # pattern = '<(?P<tab>w+)>(w+)</(?P=tab)>'
        • # ret = re.search(pattern,s)
        • # print(ret)
        • 当结果是None表示两个同名不匹配.
        • 结果是一个内存表达式表示两个同名匹配
    • 正则表达式如果写的足够好 能够最大限度的简化我们的操作
      • 掌握作业中的所有内容
      • 能够看懂常用正则表达式
      • 并且能够做出一些公司特异性要求的修改
    • 示例
  • 相关阅读:
    js截取字符串区分汉字字母代码
    List 去处自定义重复对象方法
    63. Unique Paths II
    62. Unique Paths
    388. Longest Absolute File Path
    41. First Missing Positive
    140. Word Break II
    139. Word Break
    239. Sliding Window Maximum
    5. Longest Palindromic Substring
  • 原文地址:https://www.cnblogs.com/982336352ryan/p/9495434.html
Copyright © 2011-2022 走看看