java 正则表达 group_正则表达式中 group groups区别

先看代码instance:

1 >>> a="123abc456"

2 >>> importre

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))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值