写在前面

  • 面试字节跳动网络运维岗时,发现这个岗位会对网络设备进行返回数据处理,这些数据看上去是表格形式的数据格式长相,实际的数据类型是一串字符串。
  • 这个岗位很青睐Python来处理数据,我也自然想到了正则表达式的处理方式,但奈何我以前用Python只做硬件控制和图像处理,很少对大量相似性数据做处理,现在就来学学正则表达式吧。

正则表达式元字符

  • ".":任意字符
  • "r''":r后面的单引号里的正则表达式为原生字符
  • "*":表示匹配前面的任意字符任意次,包括0次
  • "+":表示匹配前面的任意字符任意次,不包括0次
  • "{}":表示匹配前面的字符指定次,
  • "\d":匹配任意数字
  • "\D":匹配任意非数字
  • "\s":匹配任意一个空白字符,空格、tab、换行等
  • "\S":匹配任意一个非空白字符
  • "\w":匹配任意一个文字字符,大小写,数字,下划线,甚至包括unicode里的中文字符。
  • "\W":匹配任意一个非文字字符
  • "[]":
    • 实例:
      1. [a-z]:匹配a-z范围内的所以英文小写字符
      2. [1-9]:匹配1-9范围内的所有数字
      3. [\S]:匹配所有空白字符
      4. [,]:匹配所有英文逗号
      5. [.]:匹配所有英文句号
  • "[^\d]":^就是取反,[\d]是取数字,前面加个^就是非数字
  • "^"
    • 单行模式下,匹配整个文本的第一行起始位置
    • 多行模式下,匹配整个文本的每一行起始位置
  • "$"
    • 单行模式下,匹配整个文本的最后一行结束位置
    • 多行模式下,匹配整个文本的每一行结束位置
  • "()":分组,Python.re.compile模块一般只返回()中的list,如果有多个(),那么每个组的第n个元素会共同构成一个tuple元组(元组和列表是有序的,字典是无序的)

  • 贪婪模式元字符:+ * 非贪婪模式元字符:?

  • Python正则表达式中,缺省情况下就是单行模式,可以使用re.MULTILINE改为多行模式

  • Python正则表达式在线验证工具网址:https://regex101.com