替换为re.sub AFTER匹配模式

时间:2015-05-27 15:51:34

标签: python regex

我有一个我无法弄清楚的正则表达式替换。

s2 = re.compile("^DATA_ARRAY (.*?};)", re.DOTALL|re.MULTILINE)    
result = re.sub(s2, "newData", inputData)

问题在于它取代了" DATA_ARRAY"部分也是如此。我只需要替换" DATA_ARRAY"之后的文本。部分。我已将数据放在s2 (.*?};)中的一个组中,但无法弄清楚如何使用re.sub函数来仅替换所需的部分。

此致

2 个答案:

答案 0 :(得分:1)

s2 = re.compile("^(DATA_ARRAY )(.*?};)", re.DOTALL|re.MULTILINE)    
result = re.sub(s2, r"\1newData", inputData)

您可以捕获first group并通过backreferencing

替换

或只是

s2 = re.compile("^DATA_ARRAY (.*?};)", re.DOTALL|re.MULTILINE)    
result = re.sub(s2, "DATA_ARRAY newData", inputData)

答案 1 :(得分:0)

s2 = re.compile("(?<=^DATA_ARRAY )(.*?};)", re.DOTALL|re.MULTILINE)    
result = re.sub(s2, "newData", inputData)

你可以有一个lookbehind断言(?<=___)