Python中的正则表达式模式,用于搜索文件中的文本块

Python中的正则表达式模式,用于搜索文件中的文本块,python,regex,string,Python,Regex,String,您好,我是regex新手,我正在尝试编译一个regex以匹配下面的文本块,一个文件中有多个这样的文本块,我想将这些块移动到另一个文件中。请帮帮我 conversion DC_PRESS_1024 { kind = conversionKind rationalFunction; physMin = 0; physMax = 10; coefficients = ( 0; 1024; 0; 0;

您好,我是regex新手,我正在尝试编译一个regex以匹配下面的文本块,一个文件中有多个这样的文本块,我想将这些块移动到另一个文件中。请帮帮我

conversion DC_PRESS_1024 {
    kind = conversionKind rationalFunction;
    physMin = 0;
    physMax = 10;
    coefficients = ( 
        0;
        1024;
        0;
        0;
        0;
        1;
    )
    comments = 
        commentVal {
            value = 
                mlString {
                    value = "[VIT_DDS]External_CompuMethod";
                    language = language en;
                }
            kind = commentKind internal;
        }
}

注:转换XX_XXXX_XXX{}中的内容有所不同。我想搜索整个块,而不考虑名称,即XX_XXXX_XXX和{}中的内容。

这里的难点是管理打开和关闭花括号。如果嵌套方括号的深度可能是无限的,那么我认为不能使用正则表达式,因为这将是一种递归模式。在这种情况下,您需要一个解析器,跟踪打开的括号并逐个读取文本标记

但是,如果您已经知道在块内不可能有两个以上级别的嵌套(如您的示例中所示),那么您可以使用如下正则表达式:

conversion\s*\w+\s*\{([\s\w\;\=\(\)\[\]\"]|(\{([\s\w\;\=\(\)\[\]\"]|(\{[\s\w\;\=\(\)\[\]\"]+\}))+\}))+\}

请访问:

向我们展示您的代码……到目前为止您尝试了什么?我建议您使用作为在线调试程序,您到底想捕获什么?给我们举一个字符串的例子,这个文本看起来像json。您是否尝试将其解析为json?上面的文本块是我要捕获的多行字符串,它包含多个这样的块。