如何只替换我的正则表达式匹配对象中的第二组?

时间:2017-06-20 18:52:24

标签: python regex regex-group

我有一个大数据文件,我想轻松替换值。值名称由标记<VALUE>表示,后跟各自的文本/数字量,每个值名称在其自己的行上。

我写了正则表达式模式(r'(<VALUE>)(.*)\n)。我想替换第二组。

我写了以下代码。

def edit_attribute():
    with open("file.txt", "w+") as file:
        file_string = file.read()
        attribute_regex = re.compile(r'(<VALUE>)(.*)\n')
        mo = attribute_regex.search(file_string)
        #replace mo.group(2)

我尝试使用re的sub方法,但是如果不替换包括值名称在内的整行,我就无法这样做。

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

您不替换捕获组。捕获组用于捕获要保留的字符串部分。然后,您可以在替换字符串中使用反斜杠和组编号引用此值。

newstring = re.sub(r'(<VALUE>).*', r'\1foo', oldstring)

将生成'<VALUE>foo'