import re
strings = [
"0X001000X00X001X00X0",
"001000X00X001X00X",
"000X000",
"000"
]
pattern = r"(?:X0+|^0+)(?=X|$)"
for s in strings:
print(re.sub(pattern, lambda x: x.group().replace('0', '2'), s))
aW1wb3J0IHJlCgpzdHJpbmdzID0gWwogICAgIjBYMDAxMDAwWDAwWDAwMVgwMFgwIiwKICAgICIwMDEwMDBYMDBYMDAxWDAwWCIsCiAgICAiMDAwWDAwMCIsCiAgICAiMDAwIgpdCgpwYXR0ZXJuID0gciIoPzpYMCt8XjArKSg/PVh8JCkiCgpmb3IgcyBpbiBzdHJpbmdzOgogICAgcHJpbnQocmUuc3ViKHBhdHRlcm4sIGxhbWJkYSB4OiB4Lmdyb3VwKCkucmVwbGFjZSgnMCcsICcyJyksIHMpKQ==