在python中返回反向字符串选择

时间:2016-07-29 17:13:43

标签: python

我有一个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",
    },
}"""

1 个答案:

答案 0 :(得分:1)

正则表达式不是解析这些字符串的好工具,但您可以使用re.split来实现您想要的效果。它甚至可以将两个任务合二为一:

begin, middle, end = re.split(r'presets = \{(.*)version = 1,', data,
    flags=re.DOTALL)

re.split将字符串拆分到匹配的位置;通常,分隔符不在结果列表中。但是,如果正则表达式包含捕获组,则会在分隔符的位置返回第一个组的匹配内容。