正則表達式中 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+\s\w+",i).group()
    try:
        s= re.search(r"^C\w+", i).group()
    except AttributeError:
        pass
    else:   
        if s in i:
            cached = re.search(r"\d+\s\w+",i).group()
print u"當前剩余內存為:%s MB"%str(float((int(memfree.split()[0])+int(cached.split()[0]))/1024))


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM