1

我输入了以下格式的数据,不是我决定的

key1: value1 key2: value2 key3: value3 key4 { key11: val11 key22: value22 } key5: value5 ............

输入字符串将具有用冒号或大括号分隔的键值。

我想对它进行标记,我有以下想法:首先有一个正则表达式解析数据,直到我找到一个:{优先级{超过:

然后拆分并读取,直到达到我所说的空白模式并递归遍历整个字符串

我想知道我是否可以编写像 (some_string)(special character pattern) 这样的正则表达式(特殊字符模式可以是:{优先于{)(字符串的其余部分)

如果它是:字符串的其余部分,则从“ value1 ”获取字符串部分并捕获它。处理剩余的字符串

如果是{然后遍历,直到您找到}并在内部使用:上面定义的逻辑。

例如

a: 1 b: 2 c { d: 3 e: 4 } f: 5

这应该给

a:1
b:2
c { d: 3 e: 4 }
f: 5
4

1 回答 1

4

您可以使用此模式:

[^ ]+(?:: [^ ]+| \{[^}]+\})

例子:

import re
test = "a: 1 b: 2 c { d: 3 e: 4 } f: 5"
pattern = re.compile(r"[^ ]+(?:: [^ ]+| \{[^}]+\})")
for match in pattern.findall(test):
    print match
于 2013-05-31T22:13:33.577 回答