Python
Part1:
matches = re.findall(r"(mul\((\d+),(\d+)\))", input)
muls = [int(m[1]) * int(m[2]) for m in matches]
print(sum(muls))
Part2:
instructions = list(re.findall(r"(do\(\)|don't\(\)|(mul\((\d+),(\d+)\)))", input)
mul_enabled = True
muls = 0
for inst in instructions:
if inst[0] == "don't()":
mul_enabled = False
elif inst[0] == "do()":
mul_enabled = True
elif mul_enabled:
muls += int(inst[2]) * int(inst[3])
print(muls)