我有一个我无法弄清楚的正则表达式替换。
s2 = re.compile("^DATA_ARRAY (.*?};)", re.DOTALL|re.MULTILINE)
result = re.sub(s2, "newData", inputData)
问题在于它取代了" DATA_ARRAY"部分也是如此。我只需要替换" DATA_ARRAY"之后的文本。部分。我已将数据放在s2 (.*?};)
中的一个组中,但无法弄清楚如何使用re.sub函数来仅替换所需的部分。
此致
答案 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断言(?<=___)
。