zoukankan      html  css  js  c++  java
  • python正则表达式Re模块备忘录


    title: python正则表达式Re模块备忘录
    date: 2019/1/31 18:17:08
    toc: true

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

    备忘录

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

    一览

    选项

    #w, W, , B, d, D, s and S 
    re.A
    re.ASCII
    
    re.DEBUG
    
    #忽略大小写
    re.I
    re.IGNORECASE
    #使预定字符类 w W  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 13')

    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 表达式在线测试

  • 相关阅读:
    垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
    自考感悟,话谈备忘录模式
    [每日一题] OCP1z0-047 :2013-07-26 alter table set unused之后各种情况处理
    Java实现 蓝桥杯 算法提高 p1001
    Java实现 蓝桥杯 算法提高 拿糖果
    Java实现 蓝桥杯 算法提高 拿糖果
    Java实现 蓝桥杯 算法提高 求arccos值
    Java实现 蓝桥杯 算法提高 求arccos值
    Java实现 蓝桥杯 算法提高 因式分解
    Java实现 蓝桥杯 算法提高 因式分解
  • 原文地址:https://www.cnblogs.com/zongzi10010/p/10343864.html
Copyright © 2011-2022 走看看