Python 匹配模式后替换为re.sub
我有一个正则表达式替换,我想不出来Python 匹配模式后替换为re.sub,python,regex,Python,Regex,我有一个正则表达式替换,我想不出来 s2 = re.compile("^DATA_ARRAY (.*?};)", re.DOTALL|re.MULTILINE) result = re.sub(s2, "newData", inputData) 问题是,它也替换了“数据数组”部分。我只需要替换“数据数组”部分后面的文本。我已将数据放在s2(.*?};)中的一个组中,但无法确定如何使用re.sub函数仅替换所需的部分 问候 s2 = re.compile("^(DATA_ARRAY )(
s2 = re.compile("^DATA_ARRAY (.*?};)", re.DOTALL|re.MULTILINE)
result = re.sub(s2, "newData", inputData)
问题是,它也替换了“数据数组”部分。我只需要替换“数据数组”部分后面的文本。我已将数据放在s2(.*?};)
中的一个组中,但无法确定如何使用re.sub函数仅替换所需的部分
问候
s2 = re.compile("^(DATA_ARRAY )(.*?};)", re.DOTALL|re.MULTILINE)
result = re.sub(s2, r"\1newData", inputData)
您可以捕获第一组
并通过反向引用进行替换
或者干脆
s2 = re.compile("^DATA_ARRAY (.*?};)", re.DOTALL|re.MULTILINE)
result = re.sub(s2, "DATA_ARRAY newData", inputData)
s2=re.compile(“(?真的吗?)lookbehinds不会匹配模式..?我尝试了,但没有得到任何与此正则表达式匹配的结果。谢谢,这帮助我走上了正确的道路!实际上我必须使用命名的反向引用,因为“newData”在一个变量中。
s2 = re.compile("(?<=^DATA_ARRAY )(.*?};)", re.DOTALL|re.MULTILINE)
result = re.sub(s2, "newData", inputData)