python正则表达式Re模块备忘录

python正则表达式Re模块备忘录

备忘录

  • python中的数量词为贪婪模式
  • 前瞻回顾的解释
          前瞻: exp1(?=exp2) exp1后面的内容要匹配exp2
          负前瞻: exp1(?!exp2) exp1后面的内容不能匹配exp2
          后顾: (?<=exp2)exp1 exp1前面的内容要匹配exp2
          负后顾: (?<!exp2)exp1 exp1前面的内容不能匹配exp2

一览

选项

#\w, \W, \b, \B, \d, \D, \s and \S 
re.A
re.ASCII

re.DEBUG

#忽略大小写
re.I
re.IGNORECASE
#使预定字符类 \w \W \b \B \s \S 
re.L
re.LOCALE
#多行模式
re.M
re.MULTILINE
#使'.'特殊字符与任何字符匹配包括换行符;
re.S
re.DOTALL
#可以使用注释在正则中,忽略表达式的空白
re.X
re.VERBOSE

方法

re.compile(pattern, flags=0)
re.search(pattern, string, flags=0)
re.match(pattern, string, flags=0)
re.fullmatch(pattern, string, flags=0)
re.split(pattern, string, maxsplit=0, flags=0)
re.findall(pattern, string, flags=0)
re.finditer(pattern, string, flags=0)
re.sub(pattern, repl, string, count=0, flags=0)
re.subn(pattern, repl, string, count=0, flags=0)
re.escape(pattern)
re.purge()

match

  • ------------------属性--------------------------
  • string: 匹配时使用的文本
  • re: 匹配时使用的Pattern对象。
  • pos: 文本中正则表达式开始搜索的索引。
  • endpos: 文本中正则表达式结束搜索的索引
  • lastindex: 最后一个被捕获的分组在文本中的索引
  • lastgroup: 最后一个被捕获的分组的别名
  • ------------------方法------------------------------
  • Match.getitem(g) 匹配的下标,从0开始
  • group([group1, …]): 同上述,下标从1开始
  • groups([default]):
  • groupdict([default]): 返回以有别名的组的别名为键、以该组截获的子串为值的字典
  • start([group]): 返回指定的组截获的子串在string中的起始索引
  • end([group]): 返回指定的组截获的子串在string中的结束索引
  • span([group]): 返回(start(group), end(group))。
  • expand(template): 可用作替换,比如m.expand(r'\2 \1\3')

Pattern

  • ------------------属性--------------------------
  • pattern: 编译时用的表达式字符串。
  • flags: 编译时用的匹配模式。
  • groups: 表达式中分组的数量。
  • groupindex: 以表达式中有别名的组的别名为键、以该组对应的编号为值的字典,没有别名的组不在内。
  • ------------------方法------------------------------
  • match(string[, pos[, endpos]]) | re.match(pattern, string[, flags]) :
  • search(string[, pos[, endpos]]) | re.search(pattern, string[, flags]): 与match的不同在于能找到中间的匹配
  • split(string[, maxsplit]) | re.split(pattern, string[, maxsplit]): 分割字符
  • findall(string[, pos[, endpos]]) | re.findall(pattern, string[, flags]):
  • finditer(string[, pos[, endpos]]) | re.finditer(pattern, string[, flags]): 可以使用for来迭代
  • sub(repl, string[, count]) | re.sub(pattern, repl, string[, count]): 替换
  • subn(repl, string[, count]) |re.sub(pattern, repl, string[, count]): 返回 (sub(repl, string[, count]), 替换次数)。

例子

匹配字符串中除了"abc"以外的所有其它部分

https://www.cnblogs.com/deerchao/archive/2008/12/03/1346940.html
正则表达式:
([^abc]|a(?!bc)|(?!<a)b(?!c)|(?<!ab)c)+

字符串: xbsdabcwcwabczia

匹配:
1, xbsd
2, wcw
3, zia
说明:
任意不是abc的字符,通过.. 
字符a,只有在后边不是bc的情况下通过;
字符b,只有在前面不是a,且后边不是c的情况下通过;
字符c,只有前面不是ab的情况下通过..

参考资料

python 速记正则使用原标题: 一篇搞定Python正则表达式
正则表达式30分钟入门教程
常用正则表达式,在线正则 其他正则工具 jb51 正则速查表
官方re模块文档
cnblog Python正则表达式指南
EN 表达式在线测试

posted @ 2019-01-31 20:02  zongzi10010  阅读(303)  评论(0编辑  收藏  举报