4

我有一个这样的字符串:

a = '5:::{"test":[{"a":1,"b":2},{"a":2,"b":3}]}4:::{"something":[{"d":1,"e":2},{"d":2,"e":3}]}'

我想将其拆分为一个列表,其值为:

['5:::{"test":[{"a":1,"b":2},{"a":2,"b":3}]}','4:::{"something":[{"d":1,"e":2},{"d":2,"e":3}]}']

我试过这样的正则表达式:

b = re.findall(r'[0-9]:::.*(?=[0-9]:::)|(?=$)',a)

尝试匹配以数字开头的部分,后跟三个冒号,然后是任何字符,直到命中 [0-9]::: 或字符串结尾。这似乎完全错误,但我不知道如何在这里继续。

谢谢马库斯

4

2 回答 2

5

使用前瞻断言

re.findall(r'\d:::.+?(?=\d:::|$)', a)
于 2013-05-03T19:18:49.587 回答
2

(\d:::\{.*?\}(?=\d))|(\d:::\{.*?\})$

http://regexr.com?34opb

于 2013-05-03T19:13:22.437 回答