import re
words = [
'jalan',
'ba-jalan',
'pem-porut#an',
'daun #kulu',
'daun#kulu',
'tarik-napas',
'tarik#napas',
'n-cium #bow',
'arau/araw',
'imbaw//nimbaw',
'dengo | nengo',
'dodop=am',
'{di} dalam',
'di {dalam}'
]
for word in words:
m = re.match(r'(?:\{[^-#{}/]+\})?(?:([^-#{}/]+)-)?([^-#{}/]+)(?:/[^-#{}/]+)?(?:#([^-#{}/]+))?', word)
if m:
print(repr(m.groups()))
else:
print("(no match: %s)" % word)
aW1wb3J0IHJlCgp3b3JkcyA9IFsKICAgICdqYWxhbicsCiAgICAnYmEtamFsYW4nLAogICAgJ3BlbS1wb3J1dCNhbicsCiAgICAnZGF1biAja3VsdScsCiAgICAnZGF1biNrdWx1JywKICAgICd0YXJpay1uYXBhcycsCiAgICAndGFyaWsjbmFwYXMnLAogICAgJ24tY2l1bSAjYm93JywKICAgICdhcmF1L2FyYXcnLAogICAgJ2ltYmF3Ly9uaW1iYXcnLAogICAgJ2RlbmdvIHwgbmVuZ28nLAogICAgJ2RvZG9wPWFtJywKICAgICd7ZGl9IGRhbGFtJywKICAgICdkaSB7ZGFsYW19JwpdCgpmb3Igd29yZCBpbiB3b3JkczoKICAgIG0gPSByZS5tYXRjaChyJyg/Olx7W14tI3t9L10rXH0pPyg/OihbXi0je30vXSspLSk/KFteLSN7fS9dKykoPzovW14tI3t9L10rKT8oPzojKFteLSN7fS9dKykpPycsIHdvcmQpCiAgICBpZiBtOgogICAgICAgIHByaW50KHJlcHIobS5ncm91cHMoKSkpCiAgICBlbHNlOgogICAgICAgIHByaW50KCIobm8gbWF0Y2g6ICVzKSIgJSB3b3JkKQo=
(None, 'jalan', None)
('ba', 'jalan', None)
('pem', 'porut', 'an')
(None, 'daun ', 'kulu')
(None, 'daun', 'kulu')
('tarik', 'napas', None)
(None, 'tarik', 'napas')
('n', 'cium ', 'bow')
(None, 'arau', None)
(None, 'imbaw', None)
(None, 'dengo | nengo', None)
(None, 'dodop=am', None)
(None, ' dalam', None)
(None, 'di ', None)