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

时间:2015-06-16 06:26:04

标签: python regex string

您好我是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和{}内的内容。

1 个答案:

答案 0 :(得分:0)

这里的难点在于管理大括号的开始和结束。如果你有可能无限的嵌套括号深度,那么我认为你不能用正则表达式来做,因为它将是一个递归模式。在这种情况下,您需要一个解析器,跟踪打开的括号并通过令牌读取文本标记。

但如果您已经知道在块内部嵌套是不可能的(例如在您的示例中),那么您可以使用像这样的正则表达式:

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

请参阅:http://regexr.com/3b794