我正在尝试用 Python 解析 DNS 查询。包含两个查询的消息可能如下所示:
07example03org00TTCC13stackoverflow03com00TTCC
第一部分包含请求的域名,其中域名的每个部分之前是该部分具有的字符数(字节)。最后总是一个空字节。 T和C分别代表type和class,它们有固定的长度。
我想用空字节拆分一个包含这些消息的字符串。我可以执行 data.split('\x00')
,但这会中断查询的其余部分。
['07example03org00', 'TTCC13stackoverflow03com00', 'TTCC']
我需要这个
['07example03org00TTCC', '13stackoverflow03com00TTCC']
但我只能使用查询的 00
部分,不能使用 TTCC
。
如何按值拆分字符串并将接下来的 4 个字节添加到之前的拆分部分?
编辑:正如 Padraic Cunningham 在评论中指出的那样,我不需要结果中的零。
最佳答案
根据您的示例(适本地替换定界符 - (?:\x00)
而不是 (?:00)
),您可以使用:
>>> import re
>>> s = '07example03org00TTCC13stackoverflow03com00TTCC'
>>> re.findall('(.*?(?:00).{4})', s)
['07example03org00TTCC', '13stackoverflow03com00TTCC']
关于python - 如何在 python 中使用 tail 按值拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30687029/