Regex 重新打印整个输入及其修改

Regex 重新打印整个输入及其修改,regex,python-3.x,parsing,Regex,Python 3.x,Parsing,我只需要在配置文件中执行参数替换: #!/usr/bin/python3 import re current_config = ''' #USERNAME [name = foo] #-USERNAME #DATABASE [config = old] #-DATABASE #MORE_FIELDS [moresettings] #-MORE_FIELDS ''' new_config =''' #DATA

我只需要在配置文件中执行参数替换:

#!/usr/bin/python3
import re

current_config = '''
    #USERNAME
    [name = foo]
    #-USERNAME
    #DATABASE
    [config = old]
    #-DATABASE
    #MORE_FIELDS
    [moresettings]
    #-MORE_FIELDS
    '''
new_config ='''
    #DATABASE
    [config = new]
    #-DATABASE
    '''

final = re.sub('#DATABASE}}(.*)#-#{{#-DATABASE}}', current_config, new_config)
print(final)
正则表达式本身工作正常,问题是它只打印(正确)修改的部分,而忽略文件的其余部分:

dev-sandbox@workstation:~/PycharmProjects/test$ python3 test.py

    #DATABASE
    [config = new]
    #-DATABASE
我想要实现的是整个“current_config”变量,包括数据库块的新设置。我在shell上使用SED,但我需要python3中的这个


非常感谢您的任何帮助,re.sub的文档表明它无法完成。谢谢大家!

目标字符串中的
#-#
在哪里?请尝试
(?s)#数据库。*?#-数据库
谢谢!目标字符串中没有这样的“#-#”模式。老实说,我不知道它是做什么的,这是我得到的正则表达式规则的一部分,但我认为它工作得很好,因为它正确地识别了“#数据库”并打印出了新的参数。我尝试了您的建议,但恐怕它所做的只是打印当前_设置的值,它没有执行更改([config=old])。这是修改后的行:final=re.sub(“(?si)#DATABASE.*?#-DATABASE”,current#config,new#config)您可能将参数放错了位置。原型是
re.sub(pattern,repl,string,max=0)
。你上次评论的第一个建议解决了这个问题。非常感谢您的帮助!目标字符串中的
#-#
在哪里?请尝试
(?s)#数据库。*?#-数据库
谢谢!目标字符串中没有这样的“#-#”模式。老实说,我不知道它是做什么的,这是我得到的正则表达式规则的一部分,但我认为它工作得很好,因为它正确地识别了“#数据库”并打印出了新的参数。我尝试了您的建议,但恐怕它所做的只是打印当前_设置的值,它没有执行更改([config=old])。这是修改后的行:final=re.sub(“(?si)#DATABASE.*?#-DATABASE”,current#config,new#config)您可能将参数放错了位置。原型是
re.sub(pattern,repl,string,max=0)
。你上次评论的第一个建议解决了这个问题。非常感谢您的帮助!