import re

pattern = r'\bcast\((")?(zone)(?(1)"|\s)'
strings = [
    'cast("zone" as varchar(100)) as zoneID',
    'cast(zone as varchar(100)) as zoneID',
    'cast(zone) as varchar(100)) as zoneID'
]
for s in strings:
    m = re.search(pattern, s)
    if m:
        print(f"{m.group(2)} ---> {s}")