【发布时间】:2020-10-16 21:15:09
【问题描述】:
这是In Python, how do I split a string and keep the separators?的衍生产品
rawByteString = b'\\!\x00\x00\x00\x00\x00\x00\\!\x00\x00\x00\x00\x00\x00'
如何使用 "\\!" 将此 rawByteString 拆分为多个部分作为分隔符而不删除分隔符,所以我得到:
[b'\\!\x00\x00\x00\x00\x00\x00', b'\\!\x00\x00\x00\x00\x00\x00']
我不想使用[b'\\!' + x for x in rawByteString.split(b'\\!')][1:],因为那会使用 string.split() 并且只是一种解决方法,这就是为什么这个问题被标记为“re”模块的原因。
【问题讨论】:
-
@WiktorStribiżew
import re rawByteString = b'\\!\x00\x00\x00\x00\x00\x00\\!\x00\x00\x00\x00\x00\x00' [x for x in re.split(b'(\\\\!)', rawByteString)][1:]:[b'\\!', b'\x00\x00\x00\x00\x00\x00', b'\\!', b'\x00\x00\x00\x00\x00\x00']这不是我需要的,我需要[b'\\!\x00\x00\x00\x00\x00\x00', b'\\!\x00\x00\x00\x00\x00\x00'] -
re.split(rb'(?!\A)(?=\\!)', rawByteString),见ideone.com/L9n1V9 -
看看
lst_Bytes = re.split(b'(?<!^)(?=\\\\!)', rawByteString)是否适合你 -
@JvdV 和 Lorenz 模式相同,因为
(?!\A)=(?<!^)因为没有通过re.M并且"\\\\"=r"\\" -
我修改了标题,以便显示与其他问题的区别。
标签: python regex split re rawbytestring