Expression régulière pour rechercher des mots avec des traits d'union et/ou des apostrophes

Je cherchais une expression régulière pour rechercher des mots avec des traits d'union et/ou des apostrophes. Jusqu'à présent, j'ai:

(\w+([-'])(\w+)?[']?(\w+))

et qui fonctionne, la plupart du temps, mais si il y a une apostrophe, puis un trait d'union, comme "qu'est-ce", il ne correspond pas aux. Je pourrais ajouter plus d'options, bien que peut-être il y a un autre moyen plus efficace?

Quelques exemples de ce que je suis en train de match: Marie, Haute-école, c'est, des Chambres, Qu'est-ce.

De le regarder à nouveau, (\w+([-'])(\w+)?[-']?(\w+)) va travailler pour ce dont j'ai besoin la plupart du temps si je suis encore curieux de savoir si il y a une autre manière.
Merci de donner plus d'exemples et contre-exemples. Lequel des énoncés suivants sont censés correspondre à: "-a", "'a", "a'-b", "a-"?
Il n'est pas nécessaire pour les maths, mais à peu près n'importe quel mot qui pourraient se produire dans n'importe quelle langue Européenne. Je peux ajouter des caractères que nécessaire.

OriginalL'auteur empedocle | 2015-08-10