在python中使用chars数组的正则表达式?

时间:2014-05-28 04:15:54

标签: python arrays regex ctypes

我有一个缓冲区(一个字符数组),我用来从套接字读取数据,该套接字包含一个HTTP请求。我有一些正常的表达式,可以很好地从字符串中提取相关信息,我正在寻找一种方法来使用这些正则表达式从数组中提取相同的信息,而不必从数组中构建一个字符串。这有可能与ctypes?这是我现在如何获取数据的一个例子。

import socket, array, ctypes
libc = ctypes.cdll.LoadLibrary('libc.so.6')
buff = array.array('c', '\0'*4096)
a, b = socket.socketpair()
fd = a.fileno()
buff_pointer = buff.buffer_info()[0]
b.send('a'*100)
bytes_read = libc.recv(fd, buff_pointer, len(buff), 0)
print buff #prints a zeroed array of length 4096 with 100 chars of 'a' in front

这纯粹是为了娱乐/对于lulz btw,inb4它是unpythonic。

1 个答案:

答案 0 :(得分:1)

只需在数组对象上运行你的正则表达式,例如

>>> import re
>>> m = re.match('^aaaaa', buff)
>>> m
<_sre.SRE_Match object at 0x7fd4cd2cd030>
>>> m.group()
array('c', 'aaaaa')
>>> m.string[m.start():m.end()]
array('c', 'aaaaa')

等...