import re
regex = re.compile(r"(?sm)(?:^\[0\d{2}]|\G(?!\A)).*?\R\[\K\?{3}(?=.*?\R\[0)")
test_str = ("[000] Foo\n"
"[???] Foo\n"
"[020] Foo\n"
"[???] Foo\n"
"[045] Foo\n"
"[???] Foo\n"
"[???] Foo\n"
"[100] Foo\n"
"[???] Foo\n"
"[???] Foo\n"
"[115] Foo\n"
"[???] Foo")
subst = "1??"
result = regex.sub(subst, test_str)
if result:
print(result)
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html