python regex模式以获得分析器输出


write(1, "33(B33[0;1m33[90m3.833[4;52H", 24) = 24

我想获得()(()之前的字符串)和=(

)之后的数字之间的每个值有时是-#

out抽样

close(4)                                = 0
openat(AT_FDCWD, "/proc/9392/statm", O_RDONLY) = 4
read(4, "2387 878 750 226 0 163 0n", 512) = 25
read(4, "", 487)                        = 0
close(4)                                = 0
openat(AT_FDCWD, "/proc/9392/stat", O_RDONLY) = 4
read(4, "9392 (strace) S 9330 9330 9 3481"..., 2048) = 319
read(4, "", 1729)                       = 0
close(4)                                = 0
openat(AT_FDCWD, "/proc/9407/task", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 4

我已经试过了:

表示参数

"(.*?)"

开头的字符串

(.*?)(

我只需要电话号码。

有没有更有效的方法来做我正在做的事情?

不完全确定你到底在找什么,但这似乎行得通:

import re

pattern = re.compile(r"(.*)((.*))s*=s*(.*)")

lines = ['close(4)                                = 0',
'openat(AT_FDCWD, "/proc/9392/statm", O_RDONLY) = 4',
'read(4, "2387 878 750 226 0 163 0\n", 512) = 25',
'read(4, "", 487)                        = 0',
'close(4)                                = 0',
'openat(AT_FDCWD, "/proc/9392/stat", O_RDONLY) = 4',
'read(4, "9392 (strace) S 9330 9330 9 3481"..., 2048) = 319',
'read(4, "", 1729)                       = 0',
'close(4)                                = 0',
'openat(AT_FDCWD, "/proc/9407/task", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 4']

for line in lines:
print(pattern.findall(line)

输出:

[('close', '4', '0')]
[('openat', 'AT_FDCWD, "/proc/9392/statm", O_RDONLY', '4')]
[('read', '4, "2387 878 750 226 0 163 0\n", 512', '25')]
[('read', '4, "", 487', '0')]
[('close', '4', '0')]
[('openat', 'AT_FDCWD, "/proc/9392/stat", O_RDONLY', '4')]
[('read(4, "9392 ', 'strace) S 9330 9330 9 3481"..., 2048', '319')]
[('read', '4, "", 1729', '0')]
[('close', '4', '0')]
[('openat', 'AT_FDCWD, "/proc/9407/task", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY', '4')]

最新更新