import re strs = ['/home/me/data/dataset/images/dark-side_23----83971436re.jpg', '/home/me/data/dataset/images/medium-side_23---83971436re.jpg', '/home/me/data/dataset/images/others_23---83971436re.jpg', '/home/me/data/dataset/images/light-side_23---83971436re.jpg'] rx = re.compile(r'(?:(?:dark|medium)-)?([^/]+)_\d+---[^/]*\.jpg$') for s in strs: m = rx.search(s) if m: print(m.group(1))