python如何精确匹配

各位大虾好!

小弟有一个文件里面是这个样子:

data_center = { 
    access_key = {
        ak = "this is ak", 
        sk = "this is sk",
                },
    rc_server_port = 8989,
    rc_proxy_slb_port = 8990,               
}

region = {
    id = "8",
    access_key = {
        {ak = "this is ak", sk = "this is sk"},
    },
    rtsp_url_key = "6y7u8i9o0p",
}

我现在想获取整个data_center这个节点的内容,于是我就如下写:

key_start = 'data_center'
key_end = '}'
pattern = re.compile(key_start+'(.*?)'+key_end,re.S)
result = pattern.findall(data)
print result

但是得到的结果是

[' \r\n\taccess_key = {\r\n\t\tak = "this is ak", \r\n\t\tsk = "this is sk",\r\n       \t\t ']

也就是说匹配到了前一个“},”而不是后面那个“}”,请问我该怎么办?

第二个问题,我想得到的格式跟原来的一样,还是json的格式,请问我该怎么办?

阅读 7.1k
3 个回答

最后那个}后面跟着换行吧

import os
key_end = '}' + os.linesep

至于第二个问题,格式是在的啊print result[0]试试

结束位置 先匹配到 region, 然后把匹配到的结果去掉末尾的 } 就可以了吧

第一个问题:

pattern = re.compile(key_start + '(.*?\}.*?)' + key_end, re.S)
改成以上这样确定的方式应该是可以的
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进