day18 正则表达式

简单的范围的字符组:
  0-9 匹配所有的数字
  a-z 匹配所有的小写字母
  A-Z 匹配所有的大写字母
  A-Za-z 匹配所有的字母

   字符:      

  .         匹配换行符之外的任意字符
  \w  word    匹配数字,字母,下划线
  \s  space   匹配所有的空格符     
  \d  digit   匹配数字

  \W  word    匹配非数字,字母,下划线
  \S space 匹配所有的非空格符
  \D digit 匹配非数字

  \n  newline 匹配换行符
  \t tab 匹配制表符


  ^   startwith   匹配字符串的开始,位置永远在最前
  $ endswith 匹配字符串的结尾,位置永远在最后  
  ^ $        两个一起用可以约束中间的所有字符,但是要求全部完全匹配  
  | 或      从左向右,匹配上了就不匹配了,因此长的放在前面  
  ab|abc       先匹配ab,后面有abc也不会被选中
 量词:量词放在后面只约束前面一个的要求
  *         重复零次或更多次
  +         重复一次或更多次,重复一次得到的结果就是单字符。
  ?         重复零次或一次
              ? 如果放在量词后面表示非贪婪匹配,匹配最少(惰性匹配)
              默认是贪婪匹配,匹配到最多
              表示惰性匹配的时候会缓存后面一位表示结尾的指令。比如.*?x 表示取到x前面一个字符
              放在分组前面,取消分组优先
  {n}       重复n次
  {n,}      重复n次或更多次
  {n,m} 重复n到m次
字符集:
  []         匹配字符组中的字符
  [^]        匹配除了字符组中字符的所有字符
分组:
  ()    对整体的式子进行量词约束
      在split的时候分组会保留被分割的字符
      在findall的时候,会优先匹配分组内的内容
          若不想优先,可以使用(?:)取消分组优先级
转义字符:
  \       python里面的转义字符用 r''
flags:
  re.I(IGNORECASE)忽略大小写,括号内是完整的写法
  re.M(MULTILINE)多行模式,改变
^和$的行为
  re.S(DOTALL)点可以匹配任意字符,包括换行符
  re.L(LOCALE)做本地化识别的匹配,表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境,不推荐使用
  re.U(UNICODE) 使用\w \W \s \S \d \D使用取决于unicode定义的字符属性。在python3中默认使用该flag
  re.X(VERBOSE)冗长模式,该模式下pattern字符串可以是多行的,忽略空白字符,并可以添加注释
原文地址:https://www.cnblogs.com/purewhite/p/10593174.html