使用正则表达式在python中标记字符串

我已按照以下格式输入数据,但并非由我决定


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

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


我想对它进行标记化,我有以下想法:首先要有一个正则表达式来解析数据,直到找到a:或{优先于{over为止。:


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


我想知道是否可以编写正则表达式,例如(some_string)(特殊字符模式)(特殊字符模式可以是:或{优先于{)(字符串的其余部分)


如果它是a,:那么对于其余的字符串,请从“ value1”中获取字符串部分并捕获它。处理剩余的字符串


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


例如


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

这应该给


a:1

b:2

c { d: 3 e: 4 }

f: 5


杨__羊羊
浏览 139回答 1
1回答

慕仙森

您可以使用以下模式:[^ ]+(?:: [^ ]+| \{[^}]+\})例子:import retest = "a: 1 b: 2 c { d: 3 e: 4 } f: 5"pattern = re.compile(r"[^ ]+(?:: [^ ]+| \{[^}]+\})")for match in pattern.findall(test):    print match
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python