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

  • 相关阅读:
    MyBatis整合Spring编码
    Intellij IDEA中如何给main方法赋args
    InputStream类的available()方法
    使用IDEA在引入Schema空间时报错URI is not registered解决方法以及Idea @Autowired取消提示 方法
    HelloServlet类继承HttpServlet利用HttpServletResponse对象
    DAO层单元测试编码和问题排查
    安卓Activity布局简述
    新建工程spring boot
    MySQL无法启动
    CoffeeScript编写简单新闻页(仅UI)
  • 原文地址:https://www.cnblogs.com/zongzi10010/p/10343864.html
Copyright © 2020-2023  润新知