• 正则表达式中 group groups区别


    先看代码instance:

     1 >>> a="123abc456"
     2 >>> import re
     3 >>> print(re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(0))
     4 123abc456
     5 >>> print(re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(1))
     6 123
     7 >>> print(re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(2))
     8 abc
     9 >>> print(re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(3))
    10 456
    11 >>> print(re.search("([0-9]*)([a-z]*)([0-9]*)", a).group())
    12 123abc456
    13 >>> print(re.search("([0-9]*)([a-z]*)([0-9]*)", a).groups())
    14 (123‘, abc‘, 456)
    15 >>> print(re.search("([0-9])*([a-z])*([0-9]*)", a).groups())
    16 (3‘, c‘, 456)
    17 >>> print(re.search("([0-9])*([a-z])*([0-9]*)", a).groups(1))
    18 (3‘, c‘, 456)
    19 >>> print(re.search("([0-9])*([a-z])*([0-9]*)", a).group(0))
    20 123abc456
    21 >>> print(re.search("([0-9])*([a-z])*([0-9]*)", a).group())
    22 123abc456

    1. 正则表达式中的三组括号把匹配结果分成三组

    •  m.group() == m.group(0) == 所有匹配的字符(即匹配正则表达式整体结果)
    •  group(1) 列出第一个括号匹配部分,group(2) 列出第二个括号匹配部分,group(3) 列出第三个括号匹配部分。
    • m.groups() 返回所有括号匹配的字符,以tuple格式。m.groups() == (m.group(0), m.group(1), ...)

    2. 没有匹配成功的,re.search()返回None

    3. 当然正则表达式中没有括号,group(1)肯定不对了。

    工作实例:借鉴

    os.popen() 方法用于从一个命令打开一个管道。

    在Unix,Windows中有效

    语法

    popen()方法语法格式如下:

    os.popen(command[, mode[, bufsize]])

    参数

    • command -- 使用的命令。

    • mode -- 模式权限可以是 'r'(默认) 或 'w'。

    • bufsize -- 指明了文件需要的缓冲大小:0意味着无缓冲;1意味着行缓冲;其它正值表示使用参数大小的缓冲(大概值,以字节为单位)。负的bufsize意味着使用系统的默认值,一般来说,对于tty设备,它是行缓冲;对于其它文件,它是全缓冲。如果没有改参数,使用系统的默认值。

    返回值

    返回一个文件描述符号为fd的打开的文件对象

    实例

    以下实例演示了 popen() 方法的使用:

    #encoding=utf-8
    #查看剩余内存:adb shell cat /proc/meminfo com.jingdong.app.mall
    #MemFree + Cached = 当前空闲内存,运行app之前和运行后记录内存,差值就是app所占用内存
    import os
    import re

    memfree=""
    cached=""
    fp = os.popen(r"adb shell cat /proc/meminfo com.jiuqi.app.mall")

    #查看手机内存:adb shell  cat /proc/meminfo


    for i in fp:
        if "MemFree" in i:
             memfree = re.search(r"d+sw+",i).group()
        try:
            s= re.search(r"^Cw+", i).group()
        except AttributeError:
            pass
        else:   
            if s in i:
                cached = re.search(r"d+sw+",i).group()
    print u"当前剩余内存为:%s MB"%str(float((int(memfree.split()[0])+int(cached.split()[0]))/1024))

  • 相关阅读:
    tigerVNC远程桌面,跨内网
    Nutch 二次开发之parse正文内容
    在一个字符串中找到第一个仅仅出现一次的字符。
    图像处理之霍夫变换(直线检測算法)
    EJB3.0开发环境的搭建
    uestc 250 数位dp(水)
    Matlab画图-非常具体,非常全面
    高性能I/O设计模式Reactor和Proactor
    leetcode第一刷_Path Sum II
    PreTranslateMessage作用和用法
  • 原文地址:https://www.cnblogs.com/zyy98877/p/8482371.html
Copyright © 2020-2023  润新知