我有一个python片段,它使用正则表达式返回两个字符串中的内容。
res = re.search(r'Presets = {(.*)Version = 1,', data, re.DOTALL)
我现在要做的是返回围绕这个内部部分的两个字符串。请记住,这是一个多行字符串。如何获得边界字符串,两部分列表中的开头和结尾部分将是理想的。
data = """{
data = {
friends = {
max = 0 0,
min = 0 0,
},
family = {
cars = {
van = "honda",
car = "ford",
bike = "trek",
},
presets = {
location = "italy",
size = 10,
travelers = False,
},
version = 1,
},
},
stuff = {
this = "great",
},
}"""
import re
res = re.search(r'presets = {(.*)version = 1,', data, re.DOTALL)
print res.groups(1)
在这种情况下,我想返回起始字符串:
data = """{
data = {
friends = {
max = 0 0,
min = 0 0,
},
family = {
cars = {
van = "honda",
car = "ford",
bike = "trek",
},
结束字符串:
},
},
stuff = {
this = "great",
},
}"""
答案 0 :(得分:1)
正则表达式不是解析这些字符串的好工具,但您可以使用re.split
来实现您想要的效果。它甚至可以将两个任务合二为一:
begin, middle, end = re.split(r'presets = \{(.*)version = 1,', data,
flags=re.DOTALL)
re.split
将字符串拆分到匹配的位置;通常,分隔符不在结果列表中。但是,如果正则表达式包含捕获组,则会在分隔符的位置返回第一个组的匹配内容。