python - 分割字符串上的多个匹配

标签 python regex string split

我正在 Python 中的十六进制字符串上使用 split() 函数。该字符串包含一个标记(0xffffffffffffffff),我想将其拆分出来。该标记后面是十六进制数据。十六进制化字符串中可以有多个“标记”。

现在我发现当我的第一个数据字符串以“ff”结尾并且下一个标记直接跟随它时存在问题(这种情况并不经常发生,但确实发生了)。

有什么办法可以拆分“右界”吗?

0a 0b 0c 0d 0e 0f ff ff ff ff ff ff ff ff 0a 0b 0c ...

在这种情况下,我希望字符串拆分如下:

0a 0b 0c 0d 0e 0f ->ff ff ff ff ff ff ff ff<- 0a 0b 0c ...

但它是这样分割的:

0a 0b 0c 0d 0e 0 ->f ff ff ff ff ff ff ff f-> f 0a 0b 0c ...

知道如何用 python 实现它吗?

当前代码非常简单:

a = "0a0b0c0d0e0fffffffffffffffff0a0b0c"
list = a.split("ffffffffffffffff")

[0]: 0a0b0c0d0e0
[1]: f0a0b0c

但应该是:

[0]: 0a0b0c0d0e0f
[1]: 0a0b0c

最佳答案

您可以将字符串转换为 bytes/bytearray 并将其拆分

In [2]: b = bytes.fromhex(s).split(b'\xff'*8)

In [3]: b
Out[3]: [b'\n\x0b\x0c\r\x0e\x0f', b'\n\x0b\x0c']

然后将列表的每个元素转换回 str

In [4]: [x.hex() for x in b]
Out[4]: ['0a0b0c0d0e0f', '0a0b0c']

关于python - 分割字符串上的多个匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38121082/

相关文章:

python - 如何在 numpy 中获取 3x3x3 数组上的欧几里德距离

Python 使用正则表达式从 Html 中选取文本

java:刽子手游戏重复字母

Ruby 正则表达式组替换

c - 如何摆脱 C 中的 "call is the same expression as the source"警告?

c# - 如何将键值从字典保存到字符串

用于创建可处理数百万行的 XLSX 文档的 Python(或 C)库

Python按组创建线性回归预测pandas数据帧

python - 了解二元分类器的精度和召回结果

c - 用于匹配消息的 POSIX 正则表达式